需要使用Upstart在Ubuntu中运行Python应用程序作为服务的帮助吗

需要使用Upstart在Ubuntu中运行Python应用程序作为服务的帮助吗,python,ubuntu,upstart,Python,Ubuntu,Upstart,我已经用Python编写了一个日志应用程序,打算在启动时启动,但是我无法用它启动应用程序。当使用sudo/usr/local/greeenlog/main.pyw从终端运行时,该应用程序运行良好。以下是我为新贵工作所做的尝试: /etc/init/greeenlog.conf # greeenlog description "I log stuff." start on startup stop on shutdown script exec /usr/local/gree

我已经用Python编写了一个日志应用程序,打算在启动时启动,但是我无法用它启动应用程序。当使用sudo/usr/local/greeenlog/main.pyw从终端运行时,该应用程序运行良好。以下是我为新贵工作所做的尝试:

/etc/init/greeenlog.conf

# greeenlog

description     "I log stuff."

start on startup
stop on shutdown

script
    exec /usr/local/greeenlog/main.pyw
end script
我的应用程序启动一个子线程,以防这很重要。我用expect fork小节尝试了这项工作,结果没有任何变化。我也尝试过使用sudosudo而不使用script语句(只是一个单独的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"))

有人能看出我做错了什么吗?我很感激你能给我的任何帮助。谢谢。

多亏联合国大学的帮助,我才得以纠正我的工作。显然,这些是Upstart设置的唯一环境变量(在Python中通过os.environ检索):

我的程序依赖于设置的两个变量,因此这里是使用正确环境变量的修订作业:

# 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

谢谢大家!

当您尝试
sudo start greeenlog
时,错误消息是否仍然显示
(uid=1000 pid=2496 comm=“start)
?顺便说一句,我按照您描述的那样设置了/etc/init/greeenlog.conf,并成功地使用命令
sudo start greeenlog
。很好的调用!sudo start greeenlog返回greeenlog start/running,process 2609,但应用程序没有真正启动,并且没有任何日志记录。对状态greeenlog的后续调用返回greeenlog stop/等待。同样,该应用程序与sudo/usr/local/greeenlog/main.pyw一起完美运行。我缺少什么?听起来像
main.pyw
在运行upstart时可能会崩溃。也许可以尝试将
exec/usr/local/greeenlog/main.pyw>/tmp/main.out 2>&1
放在
greeenlog.conf
中,以便您可以看到一些错误消息。
# 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