![特定のUIDを持つすべてのプロセスの実行を停止するシェルスクリプトの例は何ですか? [コピー]](https://linux33.com/image/134182/%E7%89%B9%E5%AE%9A%E3%81%AEUID%E3%82%92%E6%8C%81%E3%81%A4%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E5%AE%9F%E8%A1%8C%E3%82%92%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B%E3%82%B7%E3%82%A7%E3%83%AB%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%BE%8B%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
この特定のタスクの例をインターネットで見つけることができないようです。
答え1
次の方法でこれを実行できます。
for i in $(pgrep -U $UID_OF_ANOTHER_USER); do kill -9 $i; done
または
pkill -U $UID_OF_ANOTHER_USER
これらのプロセスを終了することに加えて、プロセスを終了するときにすべてのプロセスを一覧表示するなど、最初のプロセスでより多くのタスクを実行できます。
答え2
これはルートの場合に機能する簡単なソリューションです。
su $uid -c kill SIGSTOP -1
指示:そのユーザーになり、可能なすべてを殺してください。
このソリューションで使用されているように、すべてのソリューションにはCAP_KILL(すべてのプロセスを終了する権限)または既存のルート(ルートにこの権限がある)と権限(独自のuidを変更する権限)が必要です。
プロセスを一時停止するsigstopを送信しました(☺の要求に従って)。希望の信号を選択してください。最後の手段としてsigkillを使用してください。
答え3
killall -u $user -STOP
これは、他のユーザーとして実行されているか、影響を受けたユーザーに属する親プロセスがない場合(他のシグナルのように)安全です。
ctrl-alt-delorの解決策はおそらくより良いでしょう(より安全です)。しかし、これは実際の終了コードを提供するという利点がある。他の人は両方ともできず、自殺することができsu
ますkill
。