このプロセスを自動化する方法(おそらくスクリプト)があります:
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
は弱すぎます。
シェルを使用してこのタスクを実行できます。
kill -9 $(pidof middleman)
シェルは最初にコマンドpidof middleman
を実行します。 pidof(8) の出力はプロセスIDです。そのため、シェルはpidof
-コマンドをプロセスIDで置き換え、kill -9 18845
(または正しいプロセスIDが何であれ)を実行します。
Qbiの場合よりもさらに簡単な解決策があります。killall
では、名前でプロセスを強制終了できます。また、シグナルを指定できます。
killall -9 middleman
詳細と追加のオプションについては man killall
をご覧ください(かなりあります)。
名前が示すように、これはmiddleman
という名前のプロセスにallシグナルを送信します。しかし、それは他の方法(pkill
など)と違いはありません。さらに、pkill -9 middleman
は、middleman2
など、名前は一致するがmiddleman
に等しくないプロセスをターゲットにします。
他の答えは完全に正しいですが、3番目のオプションを追加して、すべてをここに文書化することもできます。以下も使用できます。
pkill -9 middleman
詳細と追加オプションについては、man pkill
を参照してください。
これらの方法のどれを使用するかは実際には関係ありません。それらはすべて機能します。ただし、動作を何らかの方法で変更したい場合は、対応するオプションが利用可能な他の一致するオプションを示しているため、有用であればオプションを知っている必要があります。
pkill -9 -f middleman
-f
オプションは、プロセス名だけではなく、完全なコマンドラインと一致させます。
-9
はラストリゾートシグナルであり、日常的に使用するものではないことに注意してください。
ただの楽しみのために、私はもっとマニュアルの古い学校の方法を追加したいと思います
kill -9 `ps aux | grep middleman | awk '{print $2}'`
killall -9 -ir regex_pattern
これはインタラクティブ(安全)で、部分的なコマンド名と一致します。