试图通过老板启动 statsD

Trying to start statsD via chef

我正尝试在 ubuntu 上启动 statsD,但我 运行 遇到了问题。

如果我启动它,它会工作但阻止厨师继续但它会工作并显示在石墨中。

如果我这样启动它(或使用其他方法让它在后台启动):

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

它不会阻止厨师,但石墨中什么也没有显示,但我知道它仍然 运行ning 因为

ps aux | grep stat

将命令显示为 运行ning(不包括 grep 命令)。

我已经尝试使用 forever.js 来做到这一点,但 npm 只是报告有 failed to fetch from registry: forever

编辑:

好的,我设法让它开始使用 nohup /usr/bin/node /opt/statsd/stats.js /opt/statsd/localConfig.js

这会启动 statsD(好)并且它不会阻止 chef(也好)但是现在当我尝试时它拒绝停止 运行ning sudo killall -r stat

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

所以问题变成了如何使用 nohup(或类似的东西)在后台将其设置为 运行 但仍然能够停止 statsD 以便它可以重新启动(对于配置中的任何潜在更改).

编辑:

好的,将启动命令更改为: 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 运行ning,它有一个单独的 pid

好吧,我设法创建了一个 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 }' | xargs kill -9

非常简单甚至更好我不需要在需要重新启动时执行整个 "store the pid in a txt file" 来杀死 statsd。

最好的方法可能是让 Chef 安装一个 init 脚本并让您的 init 守护进程处理所有 statsd 守护进程管理。这样您就可以使用 Chef 的 service 资源来管理实例。

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