2013-08-27 37 views
0

我试图运行一个进程作为守护进程并将其写入pidfile中的PID。 但是当我运行它,它给了我一个错误:守护进程:致命:未能告诉如果....是安全的

daemon: fatal: failed to tell if /home/ubuntu/storm/storm-0.8.2/bin/storm supervisor > /dev/null && echo $! > /var/run/supervisor-storm.pid is safe: No such file or directory 

这里是代码:

PID_FILE=/var/run/supervisor-storm.pid 
STORM_BIN=/home/ubuntu/storm/storm-0.8.2/bin/ 

start() { 
    echo "Starting storm supervisor..." 
    STORM_PROCESS="$STORM_BIN/storm supervisor &" 
    daemon "$STORM_PROCESS > /dev/null && echo \$! > $PID_FILE" 
} 

但是如果我daemon:fatal: failed to tell if ....后复制此输出指令,并在末端一切都很正常运行它:它在后台运行,创建一个pidfile。

请帮我弄清楚我做错了什么。

回答

2

只要坚持EM在$()

 
    echo "Starting storm supervisor..." 
    STORM_PROCESS= $($STORM_BIN/storm supervisor &) 
    $(daemon $STORM_PROCESS > /dev/null && echo \$! > $PID_FILE) 

不过说真的,不要打扰使用守护进程。您的流程处于后台并正在运行。就这样工作吧。你有一个pid文件,这就够了。

+0

谢谢你的工作 – Vor

+0

@Uberdoyle你为什么不应该打扰使用守护进程(或在我的情况下启动 - 停止守护进程)? – dostrander

+0

只需自己构建它。这是一个你可以使用的简单的。 https://github.com/UberDoyle/evil-kittens/tree/master/test_service – UberDoyle

0

当您的可执行文件不存在于给定系统上时,也会出现此错误。

如果您在另一个答案中提出建议,请不要使用daemon。而只需编写init.d(或同等版本)脚本来完成您的工作。