Linux

殺死 PGID 但程序正在重生,如何使其持久化?

  • August 9, 2015

我跑去ps aux --forest -j看父程序和子程序。這是一個例子:

root      3744  3744  3744  0.0  0.2  77084  4160 ?        Ss   09:34   0:00 /usr/sbin/cupsd -f
lp        3747  3747  3744  0.0  0.1  63156  2236 ?        S    09:34   0:00  \_ /usr/lib/cups/notifier/dbus dbus:// 
lp        3748  3748  3744  0.0  0.1  63156  2240 ?        S    09:34   0:00  \_ /usr/lib/cups/notifier/dbus dbus:// 

第三列是 PGID。我的目標是使用父級的 PGID 3744 殺死所有這 3 個 PID。我的命令是 -

pkill -TERM -g 3744

這是可行的,但是,該程序會使用新的 PID 重新生成自身。我怎樣才能避免這種情況並使其持久化?

您正在執行 Ubuntu 14.04,它upstart用作它的 init 程序。從 中我們可以看出/etc/init/cups.conf,它有一個respawn節,所以預設情況下,當 cupsd 程序結束時,會啟動另一個。

# kill -TERM -3390
# tail -1 /var/log/syslog
Aug  9 14:22:49 ubuntu kernel: [  283.270126] init: cups main process ended, respawning

你說你想殺死 cupsd 程序樹,並在下次重新啟動時重新啟動。為此,您可以使用initctl stop(或只是stop)命令:

# stop cups
cups stop/waiting

cups-browsed如果您希望與杯子相關的所有事情都停止,您可能還想停止。

這不會永久禁用該服務。重新啟動後,將啟動 cups 程序。

引用自:https://unix.stackexchange.com/questions/220830