让python脚本在unix

时间:2017-02-20 04:28:11

标签: python unix subprocess nohup

我有一个python脚本,我想在unix服务器的后台执行。问题是我需要python脚本等待上一步完成才能进入下一个任务,但我希望我的工作在退出后继续运行。

我想我可以设置如下,但想要确认:

脚本的摘录如下所示,其中命令2依赖于命令1的输出,因为它在同一目录中输出已编辑的可执行文件。我想指出,命令1和2没有nohup /&包括在内。

subprocess.call('unix command 1 with options', shell=True)
subprocess.call('unix command 2 with options', shell=True)

如果我这样启动我的python脚本:

% nohup python python_script.py &

我的脚本是否会在后台运行,因为我明确没有把nohup /&在我的脚本化的unix命令中,而是在后台运行python脚本?

2 个答案:

答案 0 :(得分:4)

是的,通过运行带有nohup的python脚本(没有挂断),当网络被切断并且尾随&符号将在后台运行您的脚本。

您仍然可以查看脚本的输出,nohup会将stdout传递给nohop.out文件。您可以通过拖尾输出文件来实时监控输出:

$ tail -f nohop.out

关于nohup.out文件的快速说明......

nohup.out          The output file of the nohup execution if
                   standard  output is a terminal and if the
                   current directory is writable.

或使用& 附加命令以将python脚本作为守护程序运行并拖尾日志。

$ nohup python python_script.py > my_output.log &
$ tail -f my_output.log

答案 1 :(得分:1)

您可以使用nohup

  1. chomd +x /path/to/script.py
  2. nohup python /path/to/script.py &
  3. 或者

    使用logout而不是关闭终端,当你执行logout时,它不是SIGHUP,因此shell不会向其任何child.children发送SIGHUP。