以下の出力をご覧くださいpsコマンド:
abc@smaug:~/Desktop$ ps ax | grep firefox
2213 ? Sl 2:01 /usr/lib/firefox/firefox
2644 pts/0 S+ 0:00 grep --color=auto firefox
両方の行と、Firefoxプロセスを強制終了するために使用できるプロセスIDを説明してください。
プロセスID 2644は、そのコマンドを実行するたびに変化し続けます。
firefox
のPIDを見つけようとすると、すべての不要なプロセスをフィルターする新しいプロセスを起動します。このフィルター処理(grep firefox
)には検索用語「firefox」も含まれているため、自分自身を見つけることができます。
再起動するたびにps ax | grep firefox
新しいgrep
プロセスを起動したため、PIDが変化し続けます。
したがって、簡単な答えは次のとおりです。
pID 2213を使用してFirefoxを殺す
誤検知を取り除きたい場合は、別のgrep
を使用して除外できます。
$ ps ax | grep firefox | grep -v grep
さらに別のオプションは、pgrep
を使用することです(これは、見つかったプロセスのPIDのみを提供します)。
$ pgrep firefox
2213
他の回答は、firefox
について2つの言及がある理由をすでに説明しています。これが、あなたが試みていることを行う方法がps
を解析するのではなく、pkill
およびpgrep
コマンドを使用する理由です。
pgrep, pkill - look up or signal processes based on name and other
attributes
たとえば、firefox
の実行中のインスタンスを見つけるには、次のように入力します。
$ pgrep -l firefox
1020 firefox
それらを殺すために:
$ pkill firefox
一発ギャグ:
ps aux | grep firefo[x] | awk '{print $2}' | xargs kill
あなたが殺さなければならないfirefoxプロセスは:
2213 ? Sl 2:01 /usr/lib/firefox/firefox
2644プロセスは、実行しているgrepコマンドです。正しく言うと、実行を続けるたびに彼のIDを変更します。