start-stop-daemon奇怪的行为

时间:2014-08-24 20:34:27

标签: elasticsearch start-stop-daemon pallet

我正在为弹性搜索创建一个托盘箱。我一直坚持服务不开始,但看了看日志后,它似乎与托盘没什么关系。我正在使用包含init脚本的elasticsearch apt package for 1.0。如果我运行sudo service elasticsearch start,则ES启动时没有问题。如果托盘为我做了这个,那么它将标准输出成功启动它

start elasticsearch
 * Starting Elasticsearch Server
   ...done.

然而它没有开始。

sudo service elasticsearch status
 * elasticsearch is not running

我用init脚本搞砸了,我发现如果在启动守护进程后添加sleep 1,那么它就可以正确使用托盘。

start-stop-daemon --start -b --user "$ES_USER" -c "$ES_USER" --pidfile "$PID_FILE" --exec $DAEMON -- $DAEMON_OPTS
#this sleep will allow it to work
#sleep 1
log_end_msg $?

我不明白发生了什么事?

1 个答案:

答案 0 :(得分:1)

我之前也见过这样的问题。它通常归结为期望在脚本完成之前完成某些事情,这可能并不总是发生在服务上,因为它们分离了在ssh连接终止时可能仍然会被杀死的后台任务。

对于这些类型的东西,您应该使用Pallet的内置代码来监控运行。这也有一个优点,就是可以很容易地从普通的init.d切换到runit或daemontools,这对Elasticsearch尤其有用,因为它是一个JVM进程,如果让它运行得足够长,几乎任何JVM最终都会崩溃。 / p>