nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。
nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。
命令语法格式:
1 | nohup Command [Arg ... ] [ & ] |
参数说明:
Command:要执行的命令。
Arg:一些参数,可以指定输出文件。
&:让命令在后台执行,终端退出后命令仍旧执行。
举例后台运行
例1.执行root目录下的runoob.sh脚本,并重定向输入到runoob.log文件中
1 | nohup /root/runoob.sh > runoob.log 2>&1 & |
运行后,会显示进程的PID。
关于 2>&1解释:
将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 runoob.log 文件中。
0 – stdin (standard input,标准输入)
1 – stdout (standard output,标准输出)
2 – stderr (standard error,标准错误输出)
例2.用Python后台运行app.py
用这种方法,就可以把Python Flask的应用在服务器的后台运行了。
1 | nohup python -u app.py > /dev/null 2>&1 & |
运行后,会显示进程的PID。
命令详解:
1.最后一个“&”:表示后台运行程序
2.“nohup” :表示程序不被挂起
3.“python”:即python.exe,执行python代码
4.“-u”:表示不启用缓存,实时输出打印信息到日志文件(如果不加-u,则会导致日志文件不会实时刷新代码中的print函数的信息)
5.“app.py”:表示python的源代码文件
6.“>”:表示将打印信息重定向到日志文件
7.“/dev/null”:我这里就不要日志文件了
8.“2>&1”:表示将标准错误输出转变化标准输出,可以将错误信息也输出到日志文件中(0-> stdin, 1->stdout, 2->stderr)
结束后台运行进程
进程在后台运行,想要关闭就要查看进程的PID。
运行nohup
命令后也会得到进程的PID。
也可以通过搜索查找这个命令的PID。
1.用命令查找进程的PID
比如上面例2运行后,我们通过以下命令查找:
1 | ps -aux | grep "app.py" |
结果如图:
用户名后面一项就是PID,可以看到PID=471。
还可以用 top -p 471
命令确认下471进程是不是这个app.py的进程(可以看到COMMAND是python)。
2.结束进程
运行命令:
1 | kill [PID] |
比如上面的进程就是kill 471
- 本文标题:Linux nohup 后台运行 命令详解
- 本文作者:HDUZN
- 创建时间:2022-05-02 21:53:35
- 本文链接:http://hduzn.cn/2022/05/02/Linux-nohup-后台运行-命令详解/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!