我正在尝试在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。