バックグラウンドジョブを終了する方法は?

バックグラウンドジョブを終了する方法は?

KillでJobをKillする方法を知っていますが、%(number)Background JobでJobをKillすることができるかどうか、質問は「tailKill​​ as a Background Job?」です。

答え1

いくつかあります。場所を指定する方法%foo、指定されたコマンドが開始するジョブ、および指定されfoo%?fooコマンドに部分文字列を含むジョブが含まれますfoo。明示的なプレフィックスまたはサブストリングを指定する必要があります。複数の文字列が一致すると、シェルはエラーを報告します。これはPOSIX機能です。

kill %tail

(これは現在のシェルを具体的に殺すバックグラウンドタスクであることに注意してください。みんな tailこれは、現在シェルで作業しているかどうかに関係なく、ユーザーとして実行されているプロセスを使用できます。pkill。明らかに、これは次の一般的なユーティリティで付随的な損傷を引き起こす可能性がありますtail。まず、同じ引数でコマンドを実行しpgrep、それが何を殺すかを確認してください。 )

答え2

他のプロセスと同様に終了すると動作します。

pkill tail

しかし、気をつけたいなら、top、htop、psを使ってあらかじめPIDを確認してみることもできる。

答え3

これを行う方法はいくつかあります。

<port>番号を知っていれば

netstat -anp | grep :<port> | awk '{print $7}' | awk -F'[/]' '{print $1}' | grep -v "-" | xargs -I % kill -9 %

<path>ファイル記述子を知っている場合

cat <path> | xargs -I % kill -9 %

<process>名前を知っていれば

pkill -f <process>

プロセス名の一部を知っている場合<pattern>

使用psgrep:

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

これは関連するすべてを殺すでしょう<pattern>

ps次のように使用しますawk

ps -ef | awk '/<pattern>/ && !/awk/ {print $2}' | xargs -r kill -9

これは関連するすべてを殺すでしょう<pattern>

関連情報