Linux 命令:nohup
概述
nohup
是 Linux 系统中一个常用的命令,它的主要作用是让进程在用户退出登录(挂断终端连接)后继续在后台运行。nohup
是 “no hang up”(不挂断)的缩写。- 资料合集:
https://pan.quark.cn/s/6fe3007c3e95
基本语法
nohup 命令 [参数] &
&
符号表示将命令放入后台运行- 组合使用
nohup
和&
可以实现进程的后台持久运行
工作原理
当使用 nohup
运行命令时,系统会忽略 SIGHUP
(挂断信号),因此即使关闭终端或退出登录,进程依然会继续运行。
输出处理
默认情况下,nohup
会将命令的输出重定向到当前目录下的 nohup.out
文件中:
- 如果没有写入权限,会尝试写入
$HOME/nohup.out
- 可以通过重定向符号自定义输出文件:
这里nohup command > output.log 2>&1 &
2>&1
表示将错误输出也重定向到标准输出文件中
常用示例
-
后台运行一个 Python 脚本:
nohup python3 my_script.py &
-
运行脚本并指定输出文件:
nohup ./my_program > program.log 2>&1 &
-
查看正在运行的后台进程:
jobs # 查看当前终端启动的后台进程 ps -ef | grep 命令名 # 查看系统中所有相关进程
-
终止后台运行的进程:
kill -9 进程ID
(进程ID可以通过
ps
命令获取)
注意事项
- 使用
nohup
启动的进程不会随着终端关闭而结束 - 如果需要停止进程,必须手动使用
kill
命令 - 对于已经在前台运行的进程,可以先按
Ctrl+Z
暂停,再用bg
命令将其放入后台,最后使用disown -h
使其忽略挂断信号
nohup
特别适合运行需要长时间执行的任务,如数据处理、服务器程序等。