nohup命令用法

​ 我们在使用Linux的时候,希望让某个程序在后台运行。在命令的末尾加个&符号后,程序可以在后台运行,但是一旦当前终端关闭(即退出当前帐户),该程序就会停止运行。那假如说我们想要退出当前终端,但又想让程序在后台运行,该如何处理呢?比如我们想讲任务提交到服务器运行,在这种情况下我们就可以使用nohup命令。

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

语法格式

1
nohup Command [ Arg … ] [ & ]
  • Command:要执行的命令。

  • Arg:一些参数,可以指定输出文件。

  • &:让命令在后台执行,终端退出后命令仍旧执行。

​ 无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out文件中。

​ 可以使用nohup --help获得帮助,更多OPTION如下:

1
2
3
4
--help
显示帮助信息并退出
--version
显示版本信息并退出

实例

​ 比如我们想要在后台运行test.py代码,只需在命令行输入:

1
nohup python -u test.py &

​ 如果仅仅如此使用nohup命令的话,程序的输出会默认重定向到一个nohup.out文件下。如果我们想要输出到指定文件,可另外指定输出文件:

1
nohup .python -u test.py > myout.txt 

​ 这样一来,把标准输出/错误重定向到指定目录下。

​ 当我们想关闭nohup进程时,需要用top找到进程对应的pid,然后使用kill命令,关闭该进程。

1
kill -9 PID