私はこのコマンドに精通していますkill
。ほとんどの場合、kill -9
このコマンドを使用してプロセスを強制終了します。このコマンドで使用できる他の信号もたくさんありますkill
。しかし、pkill
ユースケースが何であるか、すでにkillコマンドがあるかどうかを知りたいです。killall
実装時にこのコマンドを実行してpkill
使用しますか?私の言葉は、ちょうどラッパーですか、それとも独自の実装がありますか?killall
kill
kill
pgrep
また、コマンドがプロセス名からプロセスIDを取得する方法も知りたいです。
これらすべてのコマンドは同じ基本システムコールを使用しますか?パフォーマンスの観点からどのような違いが速いですか?
ベストアンサー1
このkill
コマンドは非常に単純なラッパーです。kill
システムコール、プロセスID(PID)のみを知っています。pkill
そしてkillall
包装もしてkill
システムコール、(実際にはシステムコールのlibcライブラリを直接呼び出します)が、PIDはプロセス名、プロセス所有者、セッションID、およびその他の情報に基づいて決定できます。
またはを使用して方法と操作を確認できますpkill
。 Linuxでは、両方ともファイルシステムを読み取り、見つかった各pid(ディレクトリ)に対して名前または他の属性でプロセスを識別する方法でパスを参照します。技術的にこれを行う方法は、カーネルとシステムによって異なります。通常、2番目のフィールドにコマンド名を含む内容を読み取ります。各PIDのprocエントリのエントリを見つけて確認してください。killall
ltrace
strace
/proc
/proc/<PID>/stat
pkill -f
pgrep
/cmdline
pkill
そしてシステムコールをpgrep
使用してください。そうでなければそうではありません。パフォーマンスの違いがあるかどうかは言えません。直接ベンチマークする必要があります。readproc
killall