我如何处理停止我的服务?

How do I handle stopping my service?

我已经将我编写的程序变成了一项服务,并且我有一个 bash 脚本可以运行以启动实际程序,因为有些事情必须按特定顺序启动。启动脚本的内容(从 init.d 脚本调用 start-stop-daemon 看起来像:

./rfid_reader &
sleep 2
java ReaderClass &

这工作正常,但是当需要停止进程时我该如何杀死它们? 我见过使用 pidfiles,我是只获取两个程序的 PID,将它们写入一个文件,然后在关闭它们时杀死它们,还是我必须 ps -ef | grep program 来获取它们PID?

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

killall -KILL program_name

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

请参考this thread获取PID之前启动的后台程序