我如何处理停止服务?

时间:2017-03-08 02:28:39

标签: bash init.d

我已将我编写的程序转换为服务,并且我有一个bash脚本运行以启动实际程序,因为有些事情必须按特定顺序启动。 init.d脚本中的启动脚本(使用start-stop-daemon调用)的内容如下所示:

./rfid_reader &
sleep 2
java ReaderClass &

这样可以正常工作,但是当我需要停止这个过程时,如何杀死它们呢? 我已经看过使用了pidfiles,我只是获取两个程序的PID,将它们写入文件,然后在关闭它们时杀死它们,或者我必须ps -ef | grep program来得到他们的PID?

2 个答案:

答案 0 :(得分:2)

我认为killall不是一个好主意。您最好在某个文件中记录在后台启动的程序的PID(例如PID_FILE),然后kill $(<$PID_FILE)来停止它。

请参阅this thread了解如何获取PID之前启动的后台计划。

答案 1 :(得分:0)

假设您知道程序的名称,可以按如下方式终止它们:

killall -KILL program_name