我正在尝试创建一个 upstart 脚本,以便在启动时运行 python 脚本。理论上它看起来很简单,但我似乎无法让它工作。我正在使用我找到的骨架脚本这里并被改變。
description "Used to start python script as a service"
author "Me <[email protected]>"
# Stanzas
#
# Stanzas control when and how a process is started and stopped
# See a list of stanzas here: http://upstart.ubuntu.com/wiki/Stanzas#respawn
# When to start the service
start on runlevel [2345]
# When to stop the service
stop on runlevel [016]
# Automatically restart process if crashed
respawn
# Essentially lets upstart know the process will detach itself to the background
expect fork
# Start the process
script
exec python /usr/local/scripts/script.py
end script
我想要运行的测试脚本目前是一个简单的 python 脚本,从终端运行时不会出现任何问题。
#!/usr/bin/python2
import os, sys, time
if __name__ == "__main__":
for i in range (10000):
message = "UpstartTest " , i , time.asctime() , " - Username: " , os.getenv("USERNAME")
#print message
time.sleep(60)
out = open("/var/log/scripts/scriptlogfile", "a")
print >> out, message
out.close()
- 位置 /var/log/scripts 具有权限 777
- 文件 /usr/local/scripts/script.py 具有权限 775
- upstart 脚本 /etc/init.d/pythonupstart.conf 具有权限 755
答案1
- 最初请勿使用
respawn
。请参阅: - python 真的会 fork 吗?如果没有,请删除
fork
。 您可以简化开始工作的部分,使其变得简单:
执行 python /usr/local/scripts/script.py
显示什么
/var/log/upstart/yourjob.log
?
答案2
Upstart 脚本进入/etc/init不是/etc/init.d,那一周真是漫长的一周。:(