2015-04-27 478 views
2

我想在Ubuntu上启动statsD,但我遇到了问题。试图通过厨师启动statsD

如果我开始它,它的工作原理,但阻止厨师继续,但它的工作原理和石墨显示。

但如果我象这样开始(或使用其他方法来获得它在后台启动):

(/usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js) &

它不会阻止厨师,但没有显示出来的石墨,但是我知道它仍然在运行,因为

ps aux | grep stat

显示命令的运行(不包括grep命令)。

我试着用forever.js做,但故宫只是报告具有failed to fetch from registry: forever

编辑:

好吧,但是我设法得到它开始使用 nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js

这开始statsD(好),它并没有阻止厨师(也不错),但它现在拒绝停止运行,当我尝试 sudo killall -r stat

事后看来这是因为nohup阻止它接收到kill信号。

所以问题变成如何让它在后台使用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

有没有看过[这本食谱](https://github.com/librato/statsd-cookbook)它有运行statsd的新贵脚本 – Tensibai

回答

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。

+0

如果它解决了您的问题,请将此答案标记为已接受,即使你自己写的。这对其他用户来说是一个明确的声明,这是可以接受的解决方案。 – cassianoleal

+0

...你意识到,你不能标记对你自己的问题的答案被接受2天吗? – Thermatix

+0

我没有意识到这一点。找不到任何文档。如果你有链接,我会很感激。 无论如何,如果是这样的话,请在几天内将其标记为已接受。 :) – cassianoleal

0

要做到这一点,最好的办法是让Chef安装一个初始化脚本,让你的init守护进程处理所有的statsd守护进程管理。这样你可以使用厨师的service资源来管理实例。

StatsD在Debian资源中包含一个example init script,您可以使用它或适应您的需求。