如何将pid写入文件

roy*_*roy 2 linux bash shell startupscript init

我知道这很容易,但我无法弄明白.我们想在一台机器上运行两个luigi实例,因此需要修改init.d脚本以将PID写入文件而不是仅触摸空文件.

echo -n $"Starting luigid scheduler as $LUIGID_USER: "
( ( /usr/bin/sudo -u $LUIGID_USER $LUIGID_BIN >>/var/log/luigid/server.log 2>&1 ) &)
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/luigid && echo_success || echo_failure
echo
return $RETVAL
Run Code Online (Sandbox Code Playgroud)

目前它只是触摸空的PID文件.我希望它将PID写入文件.同时停止我想通过存储在PID文件中的PID来杀死

echo -n $"Stopping luigid scheduler: "
killproc luigid
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/luigid && echo_success || echo_failure
echo
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

谢谢

arc*_*444 7

您可以PID使用以前的命令获取$!

将启动脚本更改为:

echo -n "Starting luigid scheduler as $LUIGID_USER: "
/usr/bin/sudo -u $LUIGID_USER $LUIGID_BIN >>/var/log/luigid/server.log 2>&1 &
RETVAL=$?
PID=$!
[ $RETVAL -eq 0 ] && echo $PID > /var/lock/subsys/luigid && echo_success || echo_failure
echo
return $RETVAL
Run Code Online (Sandbox Code Playgroud)

请注意,在子shell中启动程序时,需要从命令周围删除括号.子shell不会将已启动程序的PID返回给shell,因此您应该直接从shell中调用它.