我目前正在开发一个需要单实例的linux守护进程(即限制为1个用户1进程)。在不必使用getpid()
手动将pid输出到 / var / run / 然后使用flock()
锁定它的最佳方法是什么?
答案 0 :(得分:3)
使用start-stop-daemon包装启动和关闭。
答案 1 :(得分:1)
只需使用libunique即可。这是最简单的方法。
答案 2 :(得分:1)
我在我编写的几个initd脚本中使用了类似的东西。将COMMAND替换为您需要的任何内容
PIDFILE=/var/run/service.pid
COMMAND="java -jar start.jar"
$COMMAND > /dev/null 2>&1 &
echo $! > $PIDFILE
编辑@dogane的建议,也进行了测试。
答案 3 :(得分:1)
只需锁定可执行文件本身。
答案 4 :(得分:0)
如果您确实无法拥有锁定文件,请改用套接字。另一个实例将无法启动,因为该地址已经在使用中。