名前に基づいて-9キルするシェルスクリプト


28

このプロセスを自動化する方法(おそらくスクリプト)があります:

petr@sova:~$ ps -ef | grep middleman
petr     18445  2312  1 12:06 pts/2    00:00:01 /home/petr/.rvm/gems/ruby-1.9.3-p362/bin/middleman                                                                  
petr     18581 13621  0 12:08 pts/0    00:00:00 grep --color=auto middleman
petr@sova:~$ kill -9 18445

残念ながら、pkill-9オプションを選択する必要があるため、弱すぎますkill


2
あなたは使用することができます-9pkill、あまりにも...
停止ハニングモニカ

6
私の意見では、を使用する-KILLよりもエレガントで適切です-9。どの信号がどの信号に対応するかは、実装依存です。SIGKILLたまたま9Linux i386とLinux amd64上にありますが、必ずしもどこにでもあるとは限りません。(詳細はこちら
エリアカガン

5
@EliahKagan:(-KILLコードを読みやすくするため)私も使用したいのですSIGKILL = 9、POSIX指定されていることに注意してください。-9最近ではかなり移植性があります(カーネルやアーキテクチャに依存しません)。
アンドレアコルベッリーニ

回答:


36

シェルを使用して、このタスクを実行できます。

kill -9 $(pidof middleman)

シェルはpidof middleman最初にコマンドを実行します。pidof(8)の出力はプロセスIDです。そのため、シェルはpidof-commandをプロセスIDに置き換えて実行しますkill -9 18845(または正しいプロセスIDが何であれ)。


これとの違いは何kill -9 $(pgrep middleman)ですか?
アーロンフランケ

54

qbiのソリューションよりもさらに簡単なソリューションkillallがあります。名前でプロセスを強制終了し、シグナルを指定できます。

killall -9 middleman

詳細man killallおよび追加オプションについては、かなりの数を参照してください。

名前が示すように、これはという名前のすべてのプロセスにシグナルを送信しますmiddleman。しかし、それは他の方法(などpkill)と違いはありません。さらに、などのpkill -9 middleman名前は一致するが等しくないプロセスをターゲットにします。middlemanmiddleman2


2
killall勝利のために!
アンドレアコルベッリーニ

4
すべての仲買人を殺す?まあ...
トビアスKienzler

16

他の答えは完全に正しいですが、3番目のオプションを追加して、すべてをここに文書化することもできます。以下も使用できます。

pkill -9 middleman

詳細man pkillおよび追加オプションについては、を参照してください。

これらの方法のどれを使用するかは実際には関係ありません。それらはすべて機能します。ただし、動作を何らかの方法で変更したい場合は、対応するオプションが利用可能な他の一致するオプションを示しているため、有用であればオプションを知っている必要があります。


奇妙な、ここでは動作しません。またありませんmiddleman*
-mreq

1
あ。よく見ると、実際に呼び出されるプロセスではなく、ルビーインタープリターを殺したいようですmiddleman。これは、どのように正確でどこ違いでpkillkillallpidofおよびgrep一致プロセスは本当に問題を開始します!
ロビーバサック

12
pkill -9 -f middleman

この-fオプションは、プロセス名だけでなく、完全なコマンドラインと一致させます。

-9定期的に使用するものではなく、最後の手段であることに注意してください。


1
ありがとう!実際に照合する機能のようなIcomplete command line
CWD

完全なコマンドラインは本当にクールです!
okwap

10

ただ楽しみのために、私はもっとマニュアルの古い学校の方法を追加したいと思います

kill -9 `ps aux | grep middleman | awk '{print $2}'`

1
私は数年前に仕事でそれをしました、そして、管理者は私に「大丈夫、おじいちゃん」と言った外観を与えました。また、awkの前にgrep -v grepを追加して、grepコマンドも強制終了しないようにすることができます。
イアンホルダー

@gerhard、編集のおかげで、iPadでバックティックを見つけることができませんでした。grep -vは良いアイデアです...
slipset

本当のオールドスクールの方法は、誤っ... grep [m]iddleman ...grepプロセスを殺さないように書くことです。こうすると、引用がおかしくなるため、grep自体が一致しません。
ミッコランタライネン

1
killall -9 -ir regex_pattern

これはインタラクティブ(安全)で、部分的なコマンド名と一致します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.