Firefoxを起動しようとすると、「Firefoxプロセスはすでに実行中です」と表示されることがあります。だから私はこれをしなければならない:
jeremy@jeremy-desktop:~$ ps aux | grep firefox
jeremy 7451 25.0 27.4 170536 65680 ? Sl 22:39 1:18 /usr/lib/firefox-3.0.1/firefox
jeremy 7578 0.0 0.3 3004 768 pts/0 S+ 22:44 0:00 grep firefox
jeremy@jeremy-desktop:~$ kill 7451
私が欲しいのは私のためにすべてをするだろうコマンドです。それは入力文字列とそれに対するgrep
をプロセスのリストの中で(あるいは何でも)受け取りそして出力の中のすべてのプロセスを殺します。
jeremy@jeremy-desktop:~$ killbyname firefox
私はそれをPHPでやってみましたが、exec('ps aux')
はPHPスクリプト自身の中でexec()
で実行されたプロセスのみを表示しているように見えます。
pkill firefox
より多くの情報: http://linux.about.com/library/cmd/blcmdl1_pkill.htm
また使用することができます:
pkill -f "Process name"
。
私にとってそれは完璧に動作します、それは私が探していたものでした。私の場合はフラグなしでpkillは名前で動作しませんでした。
-f
が設定されると、完全なコマンドラインがパターンマッチングに使用されます。
killall <name>
を使ってnameでプロセスを強制終了できます
killallは、指定されたコマンドのいずれかを実行しているすべてのプロセスにシグナルを送信します。シグナル名が指定されていない場合は、SIGTERMが送信されます。
シグナルは名前(例: - HUPまたは - SIGHUP)または番号(例:のどちらでも指定できます。 )-1)またはオプション - s。
コマンド名が正規表現ではなく(option - r)、スラッシュ(/)が含まれている場合、そのファイルを実行しているプロセスは、名前に関係なく強制終了されます。
しかし、ps aux
のプロセスが見当たらない場合は、おそらくそれを強制終了する権利がないでしょう。
もう少し長い選択肢:
kill `pidof firefox`
最も簡単な方法は、まず正しいプロセスIDを取得していることを確認することです。
pgrep -f [part_of_a_command]
結果が予想どおりの場合一緒に行く:
pkill -f [part_of_a_command]
奇妙な、しかし私はこのような解決策を見たことがない:
kill -9 `pidof firefox`
次のように複数のプロセス(複数のpid)を殺すこともできます。
kill -9 `pgrep firefox`
単一行の出力があるのでpidof
が好きです。
> pgrep firefox
6316
6565
> pidof firefox
6565 6316
Macでは、私はpgrepとpkillを見つけることができず、どちらもkillallが動作していなかったので、単純なワンライナースクリプトを書きました: -
export pid=`ps | grep process_name | awk 'NR==1{print $1}' | cut -d' ' -f1`;kill $pid
これを行うより簡単な方法があるならば、それを共有してください。
#killall
コマンドを使用する:
#killall -9 <processname>
スタートアップパスにsnippet
を持つすべてのプロセスを終了します。/ directory /をスニペットとして置くことで、あるディレクトリから起動したすべてのアプリケーションを終了できます。これは、同じアプリケーションディレクトリから同じアプリケーションに対して複数のコンポーネントを起動するときに非常に便利です。
ps ax | grep <snippet> | grep -v grep | awk '{print $1}' | xargs kill
*可能であれば、Pgrepを優先します。
Grepで殺すには:
kill -9 `pgrep myprocess`
より正確になるでしょう:
export pid=`ps aux | grep process_name | awk 'NR==1{print $2}' | cut -d' ' -f1`;kill -9 $pid
私は通常killallコマンド を使います。詳細はこちら をご覧ください。
私は自分自身に同じ質問をしていましたが、現在の答えの問題はそれらが殺されるプロセスを安全にチェックしてくださいではないということです。 いくつかのプロセスがパターンに一致.
免責事項として、私はsh proではありませんし、確かに改善の余地があります。
だから私は少しshスクリプトを書きました:
#!/bin/sh
killables=$(ps aux | grep $1 | grep -v mykill | grep -v grep)
if [ ! "${killables}" = "" ]
then
echo "You are going to kill some process:"
echo "${killables}"
else
echo "No process with the pattern $1 found."
return
fi
echo -n "Is it ok?(Y/N)"
read input
if [ "$input" = "Y" ]
then
for pid in $(echo "${killables}" | awk '{print $2}')
do
echo killing $pid "..."
kill $pid
echo $pid killed
done
fi
デフォルトのkill
コマンドは、PIDの代わりにコマンド名を受け入れます。 kill(1) を参照してください。頻繁に発生する問題は、bash
が、kill %1
のようなジョブ番号を受け付ける独自のkill
を提供しますが、コマンド名を提供しないことです。これはデフォルトのコマンドを妨げます。前者の機能が後者よりもあなたにとって有用であるならば、あなたは以下を呼び出すことによってbash
バージョンを無効にすることができます。
enable -n kill
GNOMEを実行している場合は、Windowsの場合と同様に、システムモニタ([システム] - > [管理] - > [システムモニタ])を使用してプロセスを強制終了できます。 KDEにも似たようなものがあります。
ps aux | grep processname | cut -d' ' -f7 | xargs kill -9 $
awk oneliner。ps
出力のヘッダーを解析するため、列番号(列名)を気にする必要はありません。正規表現をサポートします。たとえば、すべてのプロセスを強制終了するには、実行可能ファイル名(パスなし)にWord "firefox"が含まれます
ps -fe | awk 'NR==1{for (i=1; i<=NF; i++) {if ($i=="COMMAND") Ncmd=i; else if ($i=="PID") Npid=i} if (!Ncmd || !Npid) {print "wrong or no header" > "/dev/stderr"; exit} }$Ncmd~"/"name"$"{print "killing "$Ncmd" with PID " $Npid; system("kill "$Npid)}' name=.*firefox.*
kill -9 $(ps aux | grep -e myprocessname | awk '{print $ 2}')