#!/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来完成这项任务。
感谢
答案 0 :(得分:0)
有很多方法。
你可以使用:
nohup python filename.py&
setsid python filename.py
使用"屏幕"
答案 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