linux命令行后台
linux命令行后台详细介绍
在 Linux 命令行中,将程序放到后台运行是常见需求,以下是常用方法及操作详解:
一、基础方法:& 符号(临时后台运行)
在命令末尾添加 &,程序会立即在后台启动,终端可继续输入新命令。
语法:
bash
命令
示例:
bash
https://example.com/file.iso
- 特点:
- 终端关闭后,程序可能因收到
SIGHUP信号而终止(除非程序忽略该信号)。 - 后台作业会被分配一个 作业号(如
[1])和 进程号(PID)。
- 终端关闭后,程序可能因收到
二、管理后台作业:jobs、bg、fg 命令
1.
暂停前台程序并放入后台(挂起)
按 Ctrl+Z 暂停当前前台程序,程序状态变为 Stopped(停止),此时可通过 bg 使其在后台继续运行。
bash
^Z
%1
2.
查看后台作业
bash
-l+ Running https://example.com/file.iso
- Stopped
+:当前默认作业,-:次默认作业。
3.
将后台作业调至前台
bash
%作业号
4.
终止后台作业
bash
%作业号
三、避免终端关闭终止程序:nohup 命令
使用 nohup(no hang up)可忽略终端挂断信号,配合 & 让程序在后台持续运行,即使终端关闭。
语法:
bash
命令
示例:
bash
python script.py
- 输出重定向:
若不想生成nohup.out,可将输出重定向到/dev/null:bash命令 /dev/null >
四、长期后台运行:终端复用器(Screen/Tmux)
适合需要保持交互会话(如远程 SSH 断开后仍运行)的场景。
1.
Screen 工具
- 安装(Ubuntu/Debian):bash
- 使用步骤:bash
会话名会话名
2.
Tmux 工具(更现代)
- 安装(Ubuntu/Debian):bash
tmux - 使用步骤:bash
tmux new 会话名tmux attach 会话名
tmux
五、总结:选择合适的方法
| 场景 | 方法 | 特点 |
|---|---|---|
| 临时后台运行 | 命令 & |
终端关闭后可能终止,适合短期任务。 |
| 终端关闭后持续运行 | nohup 命令 & 或重定向输出 |
忽略挂断信号,日志可保存或丢弃。 |
| 管理暂停 / 恢复作业 | Ctrl+Z + bg/fg + jobs |
适合交互式管理前台 / 后台作业。 |
| 长期会话保持(如 SSH) | Screen/Tmux |
支持会话分离 / 恢复,适合需要交互的长期任务(如调试、监控)。 |
六、注意事项
- 作业号 vs PID:
jobs显示作业号(如%1),ps -ef或pgrep 命令显示 PID(需用kill PID终止)。
- 后台程序的输出:
若程序有大量输出,建议重定向到文件(如命令 > log.txt 2>&1 &),避免占用终端缓冲区。
通过以上方法,可灵活控制程序在 Linux 后台运行,满足不同场景需求。