【发布时间】:2017-07-28 11:07:42
【问题描述】:
我已经将我编写的程序变成了服务,并且我有一个 bash 脚本可以运行以启动实际程序,因为有些事情必须以特定的顺序启动。启动脚本的内容(在 init.d 脚本中使用 start-stop-daemon 调用,如下所示:
./rfid_reader &
sleep 2
java ReaderClass &
这很好用,但是当需要停止进程时,我该如何杀死它们?
我见过使用 pidfiles,我只是获取两个程序的 PID,将它们写入文件,然后在需要关闭它们时将它们杀死,还是我必须 ps -ef | grep program 获取它们的 PID?
【问题讨论】:
-
pid1=$(pidof program_name) && pid2=$(pidof other_name) && kill $pid1 $pid2怎么样?或者只是kill $(pidof program_name) $(pidof other_name) -
这些工作,我想有一个标准的方法,我想这是标准的方法
-
标准是调用与
/etc/rc.d/initfile start相同的/etc/rc.d/initfile stop守护进程(或systemctl stop prog_name调用systemd世界中的停止服务) -
好的,在停止函数中我使用
kill program_name -
如果您在
initfile世界中,只需从/etc/rc.d复制现有的初始化文件并修改/重命名它以适合您的服务,以便它在您的 state 目录中提供一个 pid 文件 当您准备停止守护程序时,将通过调用/etc/rc.d/your_prog stop将其杀死。您可以对 systemd 服务文件执行相同的操作,尽管在制作 systemd 服务文件时需要考虑更多规则。