在Linux上写入PID文件
我目前正在开发一个需要单实例的Linux守护进程(即限制为1个用户1个进程)。无需使用 getpid()
手动将 pid 写入 /var/run/ 然后使用 锁定它的最佳方法是什么?羊群()?
I am currently working on a linux daemon that needs to be single instance (i.e restricted to 1 user 1 process). What would be the best way of doing so without having to use getpid()
to manually write the pid out to /var/run/ and then lock it using flock()
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 start-stop-daemon 封装启动和关闭。
Wrap the start-up and shut-down with start-stop-daemon.
只需锁定可执行文件本身即可。
Just lock the executable file itself.
我在我编写的几个 initd 脚本中使用了类似的东西。将 COMMAND 替换为您需要的任何内容
根据 @dogane 的建议进行编辑,并进行测试。
I use something like this in a couple of initd scripts I've written. Replace the COMMAND with whatever you need
Edited with @dogane 's suggestion, tested as well.
只需使用 libunique 即可。这是最简单的方法。
Just use libunique. It is the simplest way.
如果您确实无法拥有锁定文件,请改用套接字。另一个实例将无法启动,因为该地址已被使用。
If you really can't have a lock file, use a socket instead. Another instance won't be able to start up because the address will already be in use.