ファイルに指定されたプロセスIDに基づいてプロセスを繰り返し終了します。

ファイルに指定されたプロセスIDに基づいてプロセスを繰り返し終了します。

一部のプロセスを終了できるようにしたいです。私はプロセス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が再利用されます。

関連情報