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

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

我跑去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 重新生成。我怎样才能避免这种情况并使其持久?

答案1

您正在运行 Ubuntu 14.04,它使用upstart作为其初始化进程。从 中我们可以看到/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 进程将启动。

相关内容