特定のユーザーのすべてのプロセスを強制終了する信頼できる方法はありますか? kill(-1, SIGKILL)
は、そのユーザーの不正なプロセスが最初に強制終了プロセスを強制終了しない限り、そのユーザーとして機能します。私がこれまでに見つけることができる最善の方法は、そのユーザーのsystem("ps -u")
をループしてその方法でプロセスを強制終了することですが、それは本当にハック的で非効率的です。
編集:明確にするために、私は具体的にPOSIX互換のソリューションを求めています。何らかの理由で、質問posixにタグを付けると、タイトルにそれが表示されると思いました。
Macbookを(一時的に)殺しただけで
killall -u pu -m .
ここで、puは私のユーザーIDです。コマンドの最後にあるドットに注目してください。
また試してみてください
pkill -u pu
または
ps -o pid -u pu | xargs kill -1
これを行う1つのライナーを次に示します。usernameを、削除したいユーザー名に置き換えてください。そこにルートを置くことさえ考えないでください!
pkill -9 -u `id -u username`
注:ニースになりたい場合は-9を削除しますが、すべての種類のプロセスを強制終了するわけではありません。
Debian LINUXでは、ps -o pid= -u username | xargs Sudo kill -9
を使用します。
-o pid=
を使用すると、psヘッダーは抑制され、出力はpidリストのみになります。私の知る限り、 Debian Shell はPOSIXに準拠しています。
次のコマンドは、このユーザーが作成したすべてのプロセスを強制終了します。
kill -9 -1
/ proc仮想ファイルシステムでの繰り返しはどうですか? http://linux.die.net/man/5/proc ?