Linux nohup 后台运行 命令详解
HDUZN

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 许可协议。转载请注明出处!
 评论