【发布时间】:2013-04-05 10:39:59
【问题描述】:
我有两个脚本:“autorun.py”和“main.py”。我将“autorun.py”作为服务添加到我的 linux 系统中的自动运行中。完美运行!
现在我的问题是:当我想从我的自动运行脚本启动“main.py”并且“main.py”将永远运行时,“autorun.py”也永远不会终止!所以当我这样做时
sudo service autorun-test start
命令也永远不会结束!
如何运行“main.py”然后退出,并完成它,当使用参数“stop”启动“autorun.py”时如何停止“main.py”? (这就是我认为所有其他服务的工作方式)
编辑:
解决方案:
if sys.argv[1] == "start":
print "Starting..."
with daemon.DaemonContext(working_directory="/home/pi/python"):
execfile("main.py")
else:
pid = int(open("/home/pi/python/main.pid").read())
try:
os.kill(pid, 9)
print "Stopped!"
except:
print "No process with PID "+str(pid)
【问题讨论】:
-
嗯,这不是我建议的设计。如果它有效,那很好。但是您不是在创建 pidfile 或 pid lockfile;您依赖
main.py在工作目录中;如果守护程序已经在运行并且您再次启动它,您将启动另一个副本;您的脚本在大多数平台上可能作为 initscript 无效,因此您仍然需要一个包装器(执行状态、在错误时返回非 0 等,以及具有适当的 chkconfig cmets)...
标签: python linux service autorun