在Linux上写入PID文件

发布于 2024-10-23 19:11:30 字数 139 浏览 5 评论 0原文

我目前正在开发一个需要单实例的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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

空‖城人不在 2024-10-30 19:11:30

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

Wrap the start-up and shut-down with start-stop-daemon.

流绪微梦 2024-10-30 19:11:30

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

Just lock the executable file itself.

温柔一刀 2024-10-30 19:11:30

我在我编写的几个 initd 脚本中使用了类似的东西。将 COMMAND 替换为您需要的任何内容

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

根据 @dogane 的建议进行编辑,并进行测试。

I use something like this in a couple of initd scripts I've written. Replace the COMMAND with whatever you need

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

Edited with @dogane 's suggestion, tested as well.

三生殊途 2024-10-30 19:11:30

只需使用 libunique 即可。这是最简单的方法。

Just use libunique. It is the simplest way.

卸妝后依然美 2024-10-30 19:11:30

如果您确实无法拥有锁定文件,请改用套接字。另一个实例将无法启动,因为该地址已被使用。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文