我面临以下问题。我想在 Ubuntu 11.10 系统上将 Python 脚本作为服务运行(以下链接中已提到: 在 Ubuntu 上使用 Upstart 的 Python 服务)我按照上面提到的链接中提到的步骤进行操作,但是在系统日志中收到以下错误消息:
init: script main process (21826) terminated with status 1
Jun 8 16:59:55 bilbo kernel: [263012.984531] init: script main process ended, respawning
Jun 8 16:59:55 bilbo kernel: [263013.044099] init: script main process (21827) terminated with status 1
以上两行一直在重复。
说完sudo start script
,我得到了以下信息:
$ sudo start script
script start/running, process 21826
script.conf
以下是我放置的内容/etc/init
:
description "Used to start python script as a service"
author "bilbo"
start on runlevel [2]
stop on runlevel [06]
exec python /home/bilbo/scripts/webserver.py
respawn
请告诉我我做错了什么?我是否也必须更改我的 Python 代码?
答案1
webserver.py
以非零值退出。默认情况下,Upstart 将此视为错误,因此尝试重新启动服务。
至于为什么webserver.py
退出 - 我的猜测是它假设了一个特定的环境。当 Upstart 生成一个进程时,它会清除环境,就像cron
和一样at
,然后设置很少的变量,即:
TERM
PATH
- 以及一些 Upstart 特有的(见http://upstart.ubuntu.com/cookbook/#standard-environment-variables)
set
要查看整个作业环境,请添加如下所示的调用:
如果你的 Python 服务需要其他变量,你可以使用“ env
”(Upstart 节,不是shell 命令)。 请参阅: