grep/sed/awkを使用してジョブIDを選択する方法

grep/sed/awkを使用してジョブIDを選択する方法

コンピュータグリッドで物理分析タスクを実行します。時には仕事が間違っていて、一つずつ取り除かなければなりませんが、これは痛いです。この出力で数値(748736838など)のみを選択する方法を提案してもよろしいですか?

$ps -W

mhaque -748736838   0   W                                   
mhaque -748736879   0   W                                   
mhaque -748737079   0   W                                   
mhaque -748737185   0   W                                   
mhaque -748737276   0   W

(そしてこのような数百行)

sedstackExchangeで複数の//コマンドをawk試しましたが、grep数値を区切ることはできません。数値を選択してその前に「kill」を付ける命令がありますか?たとえば、次のようになります(パイプライン)。

ps -W  |  awk/sed/grep (what_to_use) |  (some_command to place "kill") | > file.list

これにより、次のようになります(file.listから)。

kill 748736838 
kill 748736879
...so on..

その後、それをグリッドシェルにコピーして貼り付けると、問題が発生したか長時間待機しているジョブを終了できます。

ベストアンサー1

誰かを殺したいならみんな~のハッキング作業が簡単になりました。

pkill -9 mhaque

-9送信する信号です。この場合は選択してください。信号を殺す、あなたのニーズに応じて変更してください)。

返品、

pidof mhaque 

ジョブPIDの単純なリストのみを返し、それ以外は何も返しません。次のように使用することもできます。

kill -9 $(pidof mhaque)

最初のコマンドと同じ効果を生成します。これはすべてスクリプトを書くよりはるかに簡単です。例えば、

$ vlc fulvio.mkv &> /dev/null &
[1] 28006
$ vlc fulvio.mkv &> /dev/null &
[2] 28028
$ pidof vlc
28028 28006
$ pkill -9 vlc
$ ps ax | grep vlc
28054 pts/18   S+     0:00 grep --color=auto vlc
[1]-  Killed                  vlc fulvio.mkv &> /dev/null
[2]+  Killed                  vlc fulvio.mkv &> /dev/null

編集する:

コメントに含まれる説明によると、注文は

ps -W | awk '{print $2}' | cut -d"-" -f2

ジョブPIDの簡単なリストを生成します。ファイルに書き込むか直接処理できます。

kill -9 $(ps -W | awk '{print $2}' | cut -d"-" -f2)

編集2

上記のコマンドは単に標準のBashなので、これが期待どおりに機能しないことに少し驚きました。どのシステムを使用していますか?とにかく試してみてください。

 for i in $(ps -W | awk '{print $2}' | cut -d"-" -f2); do kill -9 $i; done

おすすめ記事