
Linux nohup 命令
nohup 是英文 no hang up 的缩写,意为“不挂起”,其作用是在系统后台持续运行某个命令,即使终端被关闭也不会中断程序的执行。
默认情况下(未进行输出重定向时),nohup 会生成一个名为 nohup.out 的文件并保存在当前目录中。如果当前目录无法写入该文件,则会将输出重定向到 $HOME/nohup.out 文件中。
使用权限
所有用户均可使用
语法格式
nohup Command [ Arg … ] [ & ]
参数说明:
- Command:要执行的命令。
- Arg:可选参数,也可用于指定输出文件。
- &:表示将命令置于后台运行,即使终端退出,命令仍将继续执行。
示例
以下命令将在后台运行 root 目录下的 runoob.sh 脚本:
nohup /root/runoob.sh &
若在终端中出现如下提示,表示运行成功:
appending output to nohup.out
此时进入 root 目录可以发现生成了 nohup.out 文件。
如需终止运行,可以通过下面的命令查找对应脚本的 PID,再使用 kill 命令进行停止:
ps -aux | grep "runoob.sh"
参数含义:
- a:显示所有进程
- u:以用户为主显示格式
- x:显示没有控制终端的进程
也可以使用 ps -ef | grep "runoob.sh" 来查询。
获取到 PID 后,即可通过以下命令终止进程:
kill -9 进程号PID
以下示例展示了如何在后台运行 runoob.sh 并将输出重定向至 runoob.log 文件:
nohup /root/runoob.sh > runoob.log 2>&1 &
其中 2>&1 的含义是:
将标准错误输出(文件描述符 2)重定向到标准输出(文件描述符 1),而标准输出已经被重定向到 runoob.log 文件中。
- 0 – stdin (标准输入)
- 1 – stdout (标准输出)
- 2 – stderr (标准错误输出)










