どのようにすべてのプロセスを殺すために与えられた名前の一部を使用するには?

私は、すべてのプロセスを殺したいです:

ps aux | grep my_pattern

方法は?

これは動作しません。

pkill my_pattern

#1階

すべての文字列「myProcessName」マッチング処理を強制終了します。

ps -ef | grep 'myProcessName' | grep -v grep | awk '{print $2}' | xargs -r kill -9

出典:HTTP//www.commandlinefu.com/commands/view/1138/ps-ef-grep-process-grep-v-grep-awk-print-2-xargs-kill-9

このコードは何をしているのですか?

ps -efユーザーのコンピュータ上のプロセスIDのリストを生成し表示されます。grepは、文字列を含む管路を濾過しました。grep -v grepセイは、自分自身をgrepを、プロセスの実行と一致していません。第二のカラムへの行分割およびフィルタリング空白区切り文字をデフォルトとしますawkの印刷パイプライン、これは私たちのプロセスIDです。xargsのパイプラインは、これらすべてのPIDを送信するために新しいプロセスを開始しましたkill -9ので、すべての上に、。

上記のコードはいくつかの理由で、悪い危険な、醜いと不快です。

  1. コードは、動作を終了するか、安全なトランザクションのための競争条件の確率が低いので、時間の1%の割合で任意のデータベースを行うことを余儀なくされている場合、トランザクションのアトミック性は未定義の動作をもたらす、破壊されます。殺す-9囚人を必要はありません。あなたは、このコードに敏感な場合は、してみてくださいxargs killに最後の手段、部分的に通常は閉じて送信要求フラグを交換し、要求は拒否された場合にのみkill -9

  2. あなたはので、予期せずにシステム全体が不安定につながる、無関係なプロセスで未定義のオペレーティングシステムの動作に終了または鉛の非ゼロの可能性を持ってps -ef存在しうるすべての可能なプロセスのリスト、およびAかどうかは判断できませんあなたのプロセス名を共有したり、読み取りの間の時間とキルを実行するための奇妙なサードパーティ製のライブラリ-9、processidを今あなたが誤ってあなたのいくつかはランダムなプロセスを使用していない終了し、別の名前に変更されました。

しかし、あなたは非常にユニークな名前にリスクを理解し、それを制御するために、その後、取引量が少ない時折データを紛失または破損していることで、時間の99.9%を受け入れることができるかどうか。質問があれば、無競合プロセスことを保証し、コンピュータを再起動してください。それはなる技術サポートスクリプトできるようになるので、このようなAコードである「5つのミーム。」


ハウス#2

あなたは、プロセスを一覧表示するには、次のコマンドを使用することができます

ps aux | grep -c myProcessName 

あなたは、プロセスの数を確認する必要がある場合は、実行

ps aux | grep -c myProcessName |grep -v grep 

その後、あなたはプロセスを終了するには、次のコマンドを使用することができます

kill -9 $(ps aux | grep -e myProcessName | awk '{ print $2 }') 

ハウス#3

それは右の音がしないのですか?

 pkill `pidof myprocess`

例:

# kill all java processes
pkill `pidof java`

#4階

あなたが考える場合はpkill -f PATTERNちょっと危険すぎ、私は書くつもりezkill のbashスクリプトを、あなたは、パターンマッチング処理を殺すためにどのプロセスを選択する画面が表示されます。


ハウス#5

あなたは、次のコマンドを使用することができます。

ps -ef | grep -i myprocess | awk {'print $2'} | xargs kill -9

若しくは

ps -aux | grep -i myprocess | awk {'print $2'} | xargs kill -9

これは私のために有用です。


ハウス#6

次のコマンドを使用することができます

kill -9 $(ps aux | grep 'process' | grep -v 'grep' | awk '{print $2}')

#7の構築

また、使用することができますkillall -r my_pattern-rプロセス名モードでは、拡張正規表現として解釈しました。

killall -r my_pattern

#8の構築

あなたは、プロセスIDを見つける気にしたくない場合は、名前で正規表現キル・プロセスを使用しています。例えば、クロムを殺すことは、問題を解決することができます。

killall -r --regexp chrome


ハウス#9

最高pgrep -fkillまたはpkill -f一緒に使用するには、最良かつ最も安全です、grep ps出力が間違っている可能性があります。

そして、使用ps | grep ps | grep、あなたが追加する必要があります| grep -v行のgrepアウトフィルタを| grep -vや使用パターンのスキル、pgrepない設計上の選択によって。

そして、あなたのモデルで表示された場合は/ / または任意の他の列は、プロセスの出力で取得し、それらを殺すために必要はありません、+ この欠陥の影響を受けることはありません。psUIDUSERSDATESTARTpgreppkill

私も見killall -r / -regexp式が私のタイミングと互換性がありません。

pkill -f "^python3 path/to/my_script$"

man pkill


ハウス#10

私たちははサポート見つからないpkillこのサーバを行うための最善の方法を

kill -9 $(ps ax | grep My_pattern| fgrep -v grep | awk '{ print $1 }')

あなたはサイクルを持っていません。


ハウス#11

使用しpkill -f、それはコマンドラインパターンのいずれかの部分に一致します

pkill -f my_pattern

ハウス#12

あなたが選択プロセスの柔軟性が必要な場合は、してください使用

for KILLPID in `ps ax | grep 'my_pattern' | awk ' { print $1;}'`; do 
  kill -9 $KILLPID;
done

あなたはgrepの-eなどで使用することができます。

オリジナルの記事は、0公表 ウォンの賞賛0 ビュー2210

おすすめ

転載: blog.csdn.net/p15097962069/article/details/103925579