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 について詳しく知ることができます