一部のプロセスを終了できるようにしたいです。私はプロセスID(ファイルに提供されています)を知っており、1つずつ実行したくありません。コマンドを再帰的に呼び出したり、コマンドで行ったkill
ように、ファイルや標準入力を介してコマンドに入力を提供するなどの操作を実行する方法はありますか?rm
答え1
1行に1つのプロセスIDを持つファイルが与えられたら、pids.txt
次のことができます。
xargs kill <pids.txt
これにより、kill
ファイルのプロセスIDを使用してユーティリティが呼び出されます。
他のソリューションには次のものがあります。
kill $(cat pids.txt)
IMHO これはあまりエレガントではなく、
while read pid; do
kill "$pid"
done <pids.txt
簡単なことをするためにたくさん書いていますね。
上記のバリエーションのどれも、テキストファイルのプロセスIDが次のものと一致することを確認できません。同じファイルの作成時にプロセスIDが追加されたプロセス。
Linux システムでは、通常、各新しいプロセスのプロセス ID が 1 ずつ増加し、許容される最大プロセス ID を使用する場合、より小さい数字でより多くの ID が割り当てられます。これは、プロセスIDが時間の経過とともに再利用されることを意味します。
OpenBSD などの一部のシステムでは、プロセス ID がランダムに割り当てられます。ここでも一定時間が経過すると、以前のプロセスIDが再利用されます。