Kill、pkill、Killallの違いは何ですか?

Kill、pkill、Killallの違いは何ですか?

私はこのコマンドに精通していますkill。ほとんどの場合、kill -9このコマンドを使用してプロセスを強制終了します。このコマンドで使用できる他の信号もたくさんありますkill。しかし、pkillユースケースが何であるか、すでにkillコマンドがあるかどうかを知りたいです。killall

実装時にこのコマンドを実行してpkill使用しますか?私の言葉は、ちょうどラッパーですか、それとも独自の実装がありますか?killallkillkill

pgrepまた、コマンドがプロセス名からプロセスIDを取得する方法も知りたいです。

これらすべてのコマンドは同じ基本システムコールを使用しますか?パフォーマンスの観点からどのような違いが速いですか?

ベストアンサー1

このkillコマンドは非常に単純なラッパーです。kill システムコール、プロセスID(PID)のみを知っています。pkillそしてkillall包装もしてkill システムコール、(実際にはシステムコールのlibcライブラリを直接呼び出します)が、PIDはプロセス名、プロセス所有者、セッションID、およびその他の情報に基づいて決定できます。

またはを使用して方法と操作を確認できますpkill。 Linuxでは、両方ともファイルシステムを読み取り、見つかった各pid(ディレクトリ)に対して名前または他の属性でプロセスを識別する方法でパスを参照します。技術的にこれを行う方法は、カーネルとシステムによって異なります。通常、2番目のフィールドにコマンド名を含む内容を読み取ります。各PIDのprocエントリのエントリを見つけて確認してください。killallltracestrace/proc/proc/<PID>/statpkill -fpgrep/cmdline

pkillそしてシステムコールをpgrep使用してください。そうでなければそうではありません。パフォーマンスの違いがあるかどうかは言えません。直接ベンチマークする必要があります。readprockillall

おすすめ記事