我已经写了一个Python的日志应用程序,这意味着在启动时启动,但是我一直无法用Ubuntu的Upstart init守护进程启动应用程序 。 当使用sudo /usr/local/greeenlog/main.pyw从terminal运行时,应用程序可以正常工作。 这是我为Upstart工作所尝试的:
/etc/init/greeenlog.conf
# greeenlog description "I log stuff." start on startup stop on shutdown script exec /usr/local/greeenlog/main.pyw end script
我的应用程序启动一个子线程,万一这很重要。 我已经用期望的叉节尝试了这个工作,结果没有任何改变。 我也试过这与sudo和没有脚本语句(只是一个独立的exec语句)。 在任何情况下,启动后,运行状态greeenlog返回greeenlog停止/等待并运行开始greeenlog返回:
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.61" (uid=1000 pid=2496 comm="start) interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply=0 destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init"))
任何人都可以看到我做错了什么? 我感谢你可以给的任何帮助。 谢谢。
感谢unutbu的帮助,我已经能够纠正我的工作。 显然,这些是Upstart设置的唯一环境变量(用os.environ在Python中检索):
{'TERM': 'linux', 'PWD': '/', 'UPSTART_INSTANCE': '', 'UPSTART_JOB': 'greeenlog', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/sbin:/sbin:/bin'}
我的程序依赖于这些变量的设置,所以这里是修改后的作业,使用正确的环境变量:
# greeenlog description "I log stuff." start on startup stop on shutdown env DISPLAY=:0.0 env GTK_RC_FILES=/etc/gtk/gtkrc:/home/greeenguru/.gtkrc-1.2-gnome2 script exec /usr/local/greeenlog/main.pyw > /tmp/greeenlog.out 2>&1 end script
谢谢!