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://
3番目の列はPGIDです。私の目標は、親プロセスのPGID 3744を使用して3つのPIDをすべて終了することです。私のコマンドは -
pkill -TERM -g 3744
しかし、これは効果的であり、プロセスは新しいPIDで再生成されます。どのようにこれを防ぎ、恒久的にすることができますか?
答え1
以下を使用してUbuntu 14.04を実行しています。upstart
初期化プロセスとして。ここでは/etc/init/cups.conf
1つのセクションがあることがわかるので、デフォルトではrespawn
cupdプロセスが終了すると別のセクションが始まります。
# kill -TERM -3390
# tail -1 /var/log/syslog
Aug 9 14:22:49 ubuntu kernel: [ 283.270126] init: cups main process ended, respawning
次回の再起動時にcupdプロセスツリーが終了して再起動したいと言います。これを行うには、次のコマンドを使用するか、initctl stop
単に使用します。stop
# stop cups
cups stop/waiting
cups-browsed
カップに関連するすべてを停止したい場合は、あなたも停止したいかもしれません。
サービスが永久に無効になるわけではありません。再起動するとカッププロセスが始まります。