pgrep
と pkill
ユーティリティは Sun の Solaris 7 で導入され、g33klord が指摘したように、実行中のプロセスの名前と照合されるパターンを引数として取ります。 pgrep
の間 一致するプロセスのリストを出力するだけです pkill
指定されたシグナルを送信します (または SIGTERM
デフォルトで) プロセスに。 pgrep
間の共通オプションとセマンティクス と pkill
pgrep
とのリスト マッチング プロセスを慎重に確認したい場合に便利です。 、次にpkill
でそれらを殺します . pgrep
および pkill
他の /proc
も提供する procps パッケージによって提供されます。 ps
などのファイル システム ユーティリティ 、 top
、 free
、 uptime
killall
コマンドは psmisc パッケージで提供され、pkill
とは異なります つまり、デフォルトでは、シグナルが送信されるプロセスを決定するときに、引数名と正確に一致します (最初の 15 文字まで)。 -e
、 --exact
オプションを指定して、15 文字を超える名前の完全一致を要求することもできます。これで killall
になります pkill
と比較して、使用するのがいくらか安全です .指定した引数にスラッシュ (/
) が含まれている場合 ) 文字の場合、引数はファイル名として解釈され、その特定のファイルを実行しているプロセスがシグナル受信者として選択されます。 killall
-r
を介して、プロセス名の正規表現マッチングもサポートしています 、 --regexp
オプション。
他にも違いがあります。 killall
コマンドには、たとえば、プロセスを年齢 (-o
) で照合するためのオプションがあります。 、 --older-than
と -y
、 --younger-than
)、pkill
特定の端末のプロセスのみを強制終了するように指示できます (-t
経由) オプション)。明らかに、2 つのコマンドには特定のニッチがあります。
killall
に注意してください Unix System V の子孫 (特に Sun の Solaris、IBM の AIX、および HP の HP-UX) でのコマンドは、すべて を強制終了します。 特定のユーザーが強制終了できるプロセス。root によって実行された場合、効果的にシステムをシャットダウンします。
Linux psmisc ユーティリティは BSD (および拡張機能 Mac OS X) に移植されているため、 killall
「プロセスを名前で殺す」セマンティクスに従います。
pkill
あなたが言及したフィルターと、それが非常に再利用可能な pgrep
と組み合わされているという事実の両方のために、将来の世代に教える価値のあるものです .同じ方法でプロセスを強制終了し、どちらも再帰的に強制終了しません — pgrep
を使用します 、セッション (tty ごと、setsid と考える) またはプロセス グループ (ジョブ制御と考える) で選択できます。
1 つの違いは、killall
です。 pkill
に対してプロセスの正確な名前を引数として取ります 部分的または完全な名前を取ることができます。
この質問を参照して、pkill について詳しく知ることができます