在Linux上编写PID文件

我目前正在一个Linux守护进程,需要是单个实例(即限制为1个用户1进程)。 如果不使用getpid()将pid手动写入/ var / run / ,然后使用flock()将其locking,那么最好的方法是什么?

只需锁定可执行文件本身。

用start-stop-daemon包装启动和关闭。

我在我写的几个initd脚本中使用了类似的东西。 用你需要的任何东西替换COMMAND

 PIDFILE=/var/run/service.pid COMMAND="java -jar start.jar" $COMMAND > /dev/null 2>&1 & echo $! > $PIDFILE 

用@dogane的建议进行编辑,也进行了测试。

只要使用libunique 。 这是最简单的方法。

如果你真的不能有一个锁文件,请改用套接字。 另一个实例将不能启动,因为该地址已经被使用。