尝试通过主厨

时间:2015-04-27 11:01:20

标签: node.js chef statsd

我试图在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

2 个答案:

答案 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,您可以使用或根据自己的需要进行调整。