我正在尝试在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阻止了它接收到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运行,该进程具有单独的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 $2}' | xargs kill -9

相当简单,甚至更好,当我需要重新启动时,不需要执行整个“将pid存储在txt文件中”来杀死statsd。

10-08 20:17