私はいくつかの基準に基づいて選択された複数のプロセスを終了し、終了するbashスクリプトを書いています。唯一の問題は、これらの基準がスクリプトとその親プロセス(bash
、、sshd
)自体に適用されるため、タスクが完了する前にスクリプトが終了するのを防ぐために最初に一致するプロセスを取得し、次にスクリプトとその親ps
プロセスをフィルタリングsed
し、最後にKill the残りのプロセスを使用して終了しますkill
。
今、これが単一の呼び出しに減らすことができるかどうか疑問に思いますpkill
。しかし、明らかにそれはpkill
自分自身と親プロセスを終了することが保証されている場合にのみ機能します。最後終了するプロセスのリストに表示されます。
そのような保証は実装されていますかpkill
?
ベストアンサー1
pkill
pgrep
神経が自らそうするように決して自殺しないでくださいpkill
。出口すべての適格プロセス(自分を除く)を終了した後。pkill
資格がある場合、親を殺すが親がシェルの場合は無視できない信号(通常は-9、つまり-[SIG] KILL)を使用しない限り、シェルは通常これを無視します。が含まれている場合、sshd
セッションはもちろんシェルや(ほとんど?)他のプロセスも終了しますが、これは通常望ましくありません。
pgrep
あなたは使いたいかもしれません探すまたはを使用してプロセスを実行し-l
、-lf
実行する前に追加のチェックを実行します。kill