我正在尝试将进程作为守护进程运行,并在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文件。
请帮我弄清楚我做错了什么。
答案 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
(或等效的)脚本来完成工作。