【发布时间】:2012-12-28 14:42:16
【问题描述】:
我创建了一个客户端-服务器应用程序,现在我想部署它。
在开发过程中,我在终端上启动了服务器,当我想停止它时,我只需要输入“Ctrl-C”。
现在希望能够在后台启动它并在我想要的时候停止它,只需键入:
/etc/init.d/my_service {stop|stop}
我知道如何执行初始化脚本,但问题是如何真正停止进程?
我首先想到的是用类似这样的方式检索 PID:
ps aux | grep "my_service"
然后我找到了一个更好的主意,仍然使用 PID:将其存储在文件中以便在尝试停止服务时检索它。
确实太脏和不安全,我最终想到了使用套接字来启用“停止”进程来告诉实际进程关闭。
我想知道这通常是怎么做的?或者更确切地说,最好的方法是什么?
我检查了 init.d 中的一些文件,其中一些使用 PID 文件,但使用了一个特定的命令“start-stop-daemon”。我有点怀疑这种对我来说似乎不安全的方法。
【问题讨论】:
-
大多数服务实际上将它们的 pid 存储在一个文件中(检查 /var/run/*.pid )
-
但是如果服务没有正确关闭并且pid文件没有被删除怎么办?
-
这通常不是什么大问题,它会在下次重新启动时自动删除或在守护进程启动时被覆盖。查看相关问题stackoverflow.com/questions/688343/…了解更多详情
标签: unix service process daemon pid