在日常的Linux或Unix系统使用中,我们经常需要运行一些长时间运行的任务,比如数据备份、模型训练等。这些任务往往不适合直接在前台运行,因为它们会占用终端,阻止我们进行其他操作。nohup命令正是为了解决这个问题而设计的,它允许用户将命令或脚本以忽略挂起信号的方式运行,即使终端关闭,任务也会继续在后台执行。
使用nohup后台任务运行
举个例子,如果你想要在后台运行一个Python脚本main.py,并将所有输出保存到nohup.out文件中,可以这样做:
nohup python main.py > nohup.out &
这样,即使你关闭了终端或注销了用户,main.py脚本也会继续在后台运行,并将输出保存到nohup.out文件中。
关闭nohup运行的进程
我们需要手动停止这些进程。这时,可以用ps和grep命令来查找进程的PID(进程号),然后用kill命令来结束它。
1.查找进程号
例如,如果你想要查找所有与相关的进程,可以这样做:
ps -fe | grep python
找到这样的进程
iotmp 1092363 1037... 4 14:06 pts/3 00:00:42 python main.py
iotmp 1093193 1037... 1 14:07 pts/3 00:00:14 python webui_hy_asr.py
找到他们进程号
2.关闭进程
找到进程的PID(例子:1092363和1093193)后,你可以用kill命令来结束它。使用kill命令结束它:
kill PID # 尝试正常结束进程
# 如果不成功
kill -9 PID # 强制结束进程