1.使用&
使用&符号后程序会保持在后台,但这样不易观察运行日志
# 执行文件
./test.py &
# 查看是否在后台运行
ps -ef|grep test
# 后台的程序 需要关闭时,需要kill命令停止
killall [程序名]
2. 使用nohup
nohup
(no hang up)命令可以忽略挂起信号,即使你退出 SSH,它也能让程序继续运行。可以使用tail -f跟踪日志文件末尾来实时查看运行输出。
nohup your_command > output.log 2>&1 &
tail -f output.log
# nohup以如下方式使用sudo
nohup sudo python -u test.py > test.log2>&1 &
your_command
:你要运行的程序或脚本> output.log
:标准输出重定向到output.log
2>&1
:标准错误也重定向到标准输出&
:后台运行
其问题在于不便于停止程序,需要手动使用top等方法查询进程pid后手动kill,若是运行了多进程程序则更麻烦。
3. 使用screen
screen是终端复用器,用于开启虚拟终端窗口,即使 SSH 断开后会话也能继续保持运行
常用命令:
命令 | 功能 |
---|---|
screen | 新建一个 screen 会话 |
screen -S name | 新建一个名为 name 的会话 |
screen -ls | 列出所有会话 |
screen -r name | 重新连接名为 name 的会话 |
screen -X -S name quit | 关闭名为 name 的会话 |
会话内快捷键:
screen 的快捷键都以 Ctrl + a
开头(和 tmux 的 Ctrl+b
对应):
按键组合 | 功能 |
---|---|
Ctrl+a 然后 d | 脱离会话 |
Ctrl+a 然后 c | 新建窗口 |
Ctrl+a 然后 n /p | 下一个/上一个窗口 |
Ctrl+a 然后 " | 列出窗口并选择 |
Ctrl+a 然后 A | 重命名窗口 |
Ctrl+a 然后 ? | 查看帮助 |
相当于开启了一个保持在后台的虚拟终端,不会随着当前实际终端的关闭而关闭,可以在进入这个会话后运行想运行的程序。
声明:存在AI生成内容