我如何写pid到文件

我知道这可能很容易,但我无法弄清楚。 我们希望在一台机器上运行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 

目前它只是触摸空的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 

请帮忙吗?

谢谢

你可以用$!获得前一个命令的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 

请注意,您需要删除命令周围的括号,因为它们在子shell中启动程序。 子shell不会将启动的程序的PID返回到你的shell,所以你应该直接从你的shell调用它。

manshlock应该做的伎俩,我相信:

 shlock [-du] [-p PID] -f lockfile 

 shlock uses the link(2) system call to make the final target lock file, which is an atomic operation (ie "dot locking", so named for this mechanisms original use for locking system mailboxes). It puts the process ID ("PID") from the command line into the requested lock file. 

或者根据情况( manflock ,一个很好的例子检查了这一点: http : //codehackit.blogspot.fr/2013/04/locking-processes-with-flock.html