我试图在ubuntu上启动statsD,但我遇到了问题。
如果我开始它,它可以阻止厨师继续,但它可以工作并显示石墨。
但是,如果我这样开始(或使用其他方法让它在后台启动):
(/usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js) &
它没有阻止厨师,但没有任何东西出现在石墨中,但我知道它仍在运行,因为
ps aux | grep stat
将命令显示为正在运行(不包括grep命令)。
我尝试使用forever.js进行此操作,但是npm只报告为failed to fetch from registry: forever
编辑:
好的,我设法让它开始使用
nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js
这会启动statsD(好)并且它不会阻止厨师(也很好)但是它现在拒绝在我尝试时停止运行
sudo killall -r stat
事后看来,nohup阻止它接收杀戮信号。
所以问题在于如何使用nohup(或类似的东西)在后台运行它,但仍能够停止statsD以便重新启动(对于配置中的任何可能的更改)。
编辑:
好的,将start命令更改为:
nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js >> /var/log/statsd.log 2>&1& \n echo $! /opt/statsd/statds.pid
我能够存储pid,然后使用
kill -9 `/opt/statsd/statsd.pid`
我能够杀死该进程,但它仍然会rcp.statd -L
运行,其中有一个单独的pid
答案 0 :(得分:0)
好的,我设法创建了一个bash命令,可以找到并杀死其中包含stat
个字的任何进程;这对我来说很好,因为只有与statd相关的流程才有stat
。
因此,启动statD的命令是:
nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js >> /var/log/statsd.log 2>&1&
有点长的啰嗦,但我正在使用绝对路径。
要停止的命令是:
ps aux | awk '/stat/ {print $2}' | xargs kill -9
非常简单甚至更好我不需要做整个“将pid存储在txt文件中”来在我需要重新启动时杀死statsd。
答案 1 :(得分:0)
执行此操作的最佳方法可能是让Chef安装init脚本并让init守护程序处理所有statsd守护程序管理。这样您就可以使用Chef的service
资源来管理实例。
StatsD在Debian资源中包含example init script,您可以使用或根据自己的需要进行调整。