在 Linux 终端中,如果希望 关闭终端后任务仍然保持运行,可以通过以下几种方式实现:
1. 使用 nohup
命令
nohup
(no hang up)允许进程在退出终端后继续运行。
基本用法
nohup command &
command
:要执行的命令。&
:将命令放入后台运行。
示例
nohup python3 my_script.py &
- 任务启动后,即使关闭终端,
my_script.py
也会继续运行。 nohup
会将输出重定向到nohup.out
文件中,可以使用cat nohup.out
查看日志。
将输出重定向到指定文件
nohup python3 my_script.py > output.log 2>&1 &
- 将标准输出和标准错误重定向到
output.log
中。
2. 使用 screen
命令
screen
允许创建虚拟终端,任务可以在后台持续运行,即使关闭终端也不会中断。
安装 screen
- Ubuntu/Debian
sudo apt update
sudo apt install screen
- CentOS/RHEL
sudo yum install screen
基本用法
- 启动
screen
会话
screen
- 运行你的任务
python3 my_script.py
- 按下
Ctrl + A
,然后按D
来 将任务挂起并退出 screen。 - 关闭终端后,任务依然在后台运行。
恢复 screen 会话
screen -r
列出所有 screen 会话
screen -ls
恢复指定 screen 会话
screen -r <session_id>
3. 使用 tmux
命令
tmux
是 screen
的增强版,允许创建多个会话并在关闭终端后保持任务运行。
安装 tmux
- Ubuntu/Debian
sudo apt update
sudo apt install tmux
- CentOS/RHEL
sudo yum install tmux
基本用法
- 启动
tmux
tmux
- 运行你的任务
python3 my_script.py
- 按下
Ctrl + B
,然后按D
来 将会话挂起。
恢复 tmux 会话
tmux attach
列出所有 tmux 会话
tmux ls
恢复指定 tmux 会话
tmux attach -t <session_name>
4. 使用 &
将进程放入后台
如果只是希望简单地将进程放到后台运行,可以使用 &
。
用法
command &
例如:
python3 my_script.py &
- 使用
jobs
查看后台任务
jobs
- 使用
bg
将任务放入后台继续运行
bg %1
- 使用
fg
恢复到前台
fg %1
- 关闭终端后任务会终止,因此不推荐直接使用
&
,建议结合nohup
使用。
5. 使用 disown
命令
当你已经将任务放入后台后,可以使用 disown
命令让任务在关闭终端后继续运行。
用法
command &
disown
示例
python3 my_script.py &
disown
总结
nohup
:简单、易用,但只能管理一个任务。screen
:适合管理多个任务,功能强大,支持会话恢复。tmux
:类似screen
,支持多会话、分屏等功能,更现代化。&
+disown
:将任务放入后台并与终端分离,适用于简单任务。
推荐: 如果只是想简单后台运行,nohup
是最方便的;如果需要更强的会话管理,screen
或 tmux
更灵活。