我正在创建一个 upstart 脚本来执行我编写的 python 程序。当服务启动时,我想回显starting service - script.py...
并在启动后回显程序的进程 ID。
stopping service - script.py...
同样,当它停止时我想回应。
我到目前为止有这个(记住我对此还很陌生)...
#Name: script.conf
description "An upstart config to run ~/applications/systems/script.py as an OS service."
author "Corey F. - 12/2011"
pre-start script
echo 'starting service - script.py...'
end script
post-stop script
echo 'stopped service - script.py...'
end script
start on runlevel [2534]
stop on runlevel [!2534]
exec /home/lv_admin/applications/systems/script.py
respawn
我想我需要命令2534 status
来获取服务的进程 ID 和最后已知状态(如此处所述:http://upstart.ubuntu.com/getting-started.html)但我不知道把它放在哪里......
另外,在执行此 script.conf upstart 文件期间,如何将 upstart 事件问题记录到特定文件中?我需要知道 upstart 启动该过程时是否存在问题。
答案1
好吧,这是一个有点老的问题,但为了完整性,让我们来回答它:-)
假设您将此作业保存在 中/etc/init/myapp.conf
,则作业名称为myapp
。询问作业状态(和进程 ID)将很简单:(status myapp
以 root 身份)或sudo status myapp
在典型的 Ubuntu 用户情况下。
dmesg
默认情况下,初始化错误会转到,因此执行此操作dmesg | grep "init:"
会为您提供日志。可以通过启用更详细的日志记录sudo initctl log-priority info
。比这更详细的调试级别会发送垃圾邮件并让您感到困惑 :-)
执行sudo stop myapp
,sudo start myapp
成功后会立即得到反馈,以及进程 ID。如果出现init: unknown job
或 等信息,则表示 Upstart 解析配置文件失败,具体行数和原因可从 dmesg 中找到。