我正在为我的 sensu 服务编写一个新贵脚本。以下是暴发户脚本:
# my Sensu startup script
description "start, stop and restart the Sensu service"
start on startup
#start on runlevel [2345]
#stop on runlevel [!2345]
#env PIDFILE=/var/run/sensu/sensu-client.pid
expect fork
script
#exec /etc/init.d/sensu-service client start
exec /opt/sensu/bin/sensu-client -b -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L debug
end script
问题是这样的:Upstart 返回一个 PID ( sensu-client start/running, process 11006
),但实际上 PID 是不同的(如下)。
ps -ef | grep sensu
root 11009 1 7 16:16 ? 00:00:00 /opt/sensu/embedded/bin/ruby /opt/sensu/bin/sensu-client -b -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L debug
root 11013 1698 0 16:16 pts/2 00:00:00 grep --color=auto sensu
看起来 Sensu 从一个 pid 开始,由于某种原因停止,然后从另一个独立于 Upstart 的 pid 开始。这respawn
在 upstart conf 文件中设置时很明显,因为发生的情况与此相同,期望第二个 sensu 进程出现,其 PID 不断变化(增加),这意味着 upstart 不断产生并杀死一个新进程,因为 pid 是不是它所期望的。
请注意,从命令行运行/opt/sensu/bin/sensu-client -b -d /etc/sensu/conf.d -e /etc/sensu/extensions -p /var/run/sensu/sensu-client.pid -l /var/log/sensu/sensu-client.log -L debug
可以正常工作。
请提供任何帮助。谢谢你。