我创建了一个客户端 - 服务器应用程序,现在我想部署它。UNIX - 停止自定义服务
在开发过程中,我在终端上启动了服务器,当我想停止它时,我只需键入“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) – Gryphius
但是如果服务未正确关闭并且pid文件未被删除会怎么样? –
这通常不是什么大问题,它会在下一次重新引导时被自动删除,或者在守护进程启动时被覆盖。查看相关问题http://stackoverflow.com/questions/688343/reference-for-proper-handling-of-pid-file-on-unix了解更多详情 – Gryphius