执行没有shell的python脚本

时间:2014-12-18 06:10:22

标签: python shell

#!/usr/bin/python
import time , os
def execute():
    while True :        
        if not os.path.isfile("hello.txt"):
            fo = open("hello.txt","w");

execute()

上面的代码在使用命令python filename.py执行时正常工作,但是一旦shell关闭,这个执行就会停止。我想知道是否有任何方法可以在不使用shell的情况下执行此脚本(并连续执行)。我不需要使用cronjobs来完成这项任务。

感谢

3 个答案:

答案 0 :(得分:0)

有很多方法。

  1. 你可以使用:
    nohup python filename.py&

  2. setsid python filename.py

  3. 使用"屏幕"

答案 1 :(得分:0)

听起来你正在尝试创建一个守护程序 - 一个程序,在启动时,分离并在后台运行。

如果这就是你想要的,那么有很多细节可以做到。 PEP 3143解释了他们。幸运的是,有一个python-daemon参考库可以为您处理所有细节。如果你安装它,你所要做的就是示例中显示的内容:

#!/usr/bin/python
import time , os
import daemon

def execute():
    while True :        
        if not os.path.isfile("hello.txt"):
            fo = open("hello.txt","w");

with daemon.DaemonContext():
    execute()

该示例显示了一个单独的包装器脚本from spam import main_program的原因是,它非常方便(至少对于调试而言)能够运行与守护程序和前台脚本相同的程序。但如果您不想这样,您可以在一个脚本中完成所有操作。

(如果那不是你要问的,而你只是想知道如何在Unix下运行任何程序,那对SuperUser而言比StackOverflow更多的问题。)

答案 2 :(得分:0)

我知道有两个可用的选项,我个人在生产中使用。

更简单的选项: http://www.tecmint.com/screen-command-examples-to-manage-linux-terminals/

您希望在程序崩溃或系统重启期间自动重启的更好选项: http://supervisord.org/running.html#adding-a-program