守护进程:致命:未能判断......是否安全

时间:2013-08-27 14:11:19

标签: linux bash shell ubuntu

我正在尝试将进程作为守护进程运行,并在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 ....之后复制此输出命令并在终端中运行它一切都很好:它在后台运行,创建一个pid文件。

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

2 个答案:

答案 0 :(得分:2)

将em粘贴在$()

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

但实际上,不要打扰使用守护进程。您的流程已在后台运行。只是按原样使用它。你有一个pid文件,这就够了。

答案 1 :(得分:0)

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

另外,作为其他答案中的建议,不要使用daemon。而是简单地编写init.d(或等效的)脚本来完成工作。