0

我正在尝试将进程作为守护进程运行并将其 PID 写入 pidfile。但是当我运行它时,它给了我一个错误:

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。

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

4

2 回答 2

2

只需将它们放入 $()

    echo "启动风暴监督者..."
    STORM_PROCESS= $($STORM_BIN/风暴主管 &)
    $(守护进程 $STORM_PROCESS > /dev/null && echo \$! > $PID_FILE)

但实际上,不要费心使用守护进程。您的进程在后台运行。照原样使用它。你有一个 pid 文件,这就足够了。

于 2013-08-27T14:19:41.607 回答
0

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

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

于 2016-03-11T14:23:58.247 回答