\r\n\r\n

Linuxのターミナルからプロセスを終了させる方法

名前はキツイですが、プロセスを「殺す」というのは、簡単に言うと「強制終了させる」ということです...。

プロセスの強制終了は、そのプロセスを取り除く唯一の方法である場合があります。厳しい名前ですが、プロセスの「強制終了」は単に「強制的に終了させる」という意味です。

一過程は何ですか?

ウェブブラウザなどの実行中のプログラム、デスクトップ環境に関連するバックグラウンドプロセス、Linuxのシステムサービスなどは、すべてプロセスです。

工程を2つに分けることができます。

  • フォアグラウンド・プロセスは、ユーザーによって開始または起動されるプロセスです。これらは、ターミナル・ウィンドウまたはグラフィカル・アプリケーションになります。
  • バックグランドプロセスとは、自動的に起動し、ユーザーとの対話がないすべてのプロセスのことです。ユーザーからの入力を期待することも、結果や出力を提示することもない。バックグラウンド・プロセスは、サービスやデーモンと似ています。

フロント・オブ・ハウス・プロセスが劇場スタッフや俳優の表舞台とすれば、バック・オブ・ハウス・プロセスは舞台裏の「裏方」チームです。

プロセスが誤動作したり失敗すると、CPU時間を過剰に消費したり、RAMを消費したり、きつい計算ループに入って応答しなくなったりします。グラフィックアプリケーションは、マウスのクリックに反応しないことがあります。ターミナルアプリケーションは、コマンドプロンプトに戻ることができない場合があります。

人間的な答え

プロセスを "殺す "ということは、"プロセスを強制終了させる "ということであり、プロセスが応答を拒否した場合に必要な場合があります。

Linuxでは、kill、pkill、killallコマンドで、これを行うことができます。これらのコマンドは、グラフィカルまたはコマンドライン、フォアグラウンドまたはバックグラウンドのどのタイプのプロセスでも使用することができます。

殺害命令

killを使用するには、終了させるプロセスのプロセスID(PID)を知っている必要があります。psコマンドを使用すると、プロセスのPIDを見つけることができます。

psに全プロセスを検索させるには、-e (all processs) オプションを使用します。パイプを通した出力が少ないことが望ましく、大きな部分を占めることになる。ps、スペース、-e、スペース、|(パイプ文字)、スペース、lessと入力し、Enterキーを押してコマンドを実行します。

ps -e | less

これにより、以下のスクリーンショットのようなプロセスのリストが表示されます。/キーで少ない速度で前方を検索することもできますし、?キーになります。

どのプロセスに興味があるかを調べるには、psの出力をgrepでパイプし、プロセスの名前または部分的な名前を指定します。

ps -e | grep shutter

終了させるプロセスのPIDを見つけたら、killコマンドの引数として渡します。先のコマンドで特定したシャッター処理を終了させるには、以下のコマンドを使用します。

kill 2099

キルコマンドは、成功しても何のフィードバックもないサイレントアサシンです。

pkillコマンド

pkillコマンドは、1つまたは複数のプロセスを名前を付けて終了させることができます。プロセスをPIDで識別する必要はありません。pkillを使用するには、pkillが実行中のプロセスのリストを確認するために使用する検索語を指定します。マッチング処理を終了する。そのため、検索語のスペルが正しいかどうかを確認する必要があります。

安全策として、pkillコマンドを使う前にpgrepコマンドを使うことができます。pgrepは検索ワードも受け付けます。これは、pgrepがプロセスに終了シグナルを送らず、検索語が間違って入力された場合に他のプロセスを誤って終了させないため、安全です。pkillに渡す前に、検索語を正しく考慮したことを確認することができます。pkillとpgrepは同じように検索語を扱います。両者の処理は、マニュアルページを共有するほど類似しています。

仮に、名前に "subq "を含むプロセスがあるとする。ps-u dave | grep コマンドを使って、舞台裏を覗いてみることにします。subq "がプロセスと個々のプロセスにマッチすることがわかります。これは、全工程のフルネームがわかるようにするためです。

ps -u dave | grep subq

仮に、ユーザーがこのようなことをせず、プロセス名に「subq」という部分文字列が含まれていることだけを知っているとします。pgrepを使って、検索語に一致するものが1つだけかどうかを調べている。そして、この検索語をpkillと一緒に使うのである。

pgrep subq pkill subq

pkillを使用すると、複数のプロセスを一度に終了させることができます。ここでは、ユーザーがpgrepを実行して、Chromeが起動したプロセスの数を確認しています。pkillで皆殺しにするのです。そして、それらがすべて削除されたことをpgrepで確認する。

pgrep chrome pkill chrome pgrep chrome

同じ名前のプロセスが複数実行されていて、それらをすべて終了させたくない場合、pgrepと-f(コマンドライン)オプションを使って、どのプロセスがどのプロセスかを識別することができます。簡単な例として、2つのPing処理があります。どちらかを殺して、もう一方を殺さないようにしたいのでしょう。それらのコマンドラインを利用して、区別することができます。コマンドライン引数のラップには、反転カンマを使用していることに注意してください。

pgrep -f "ping 192.168.4.22" pkill -f "ping 192.168.4.22"

killallコマンド

警告: SolarisおよびOpenIndianaオペレーティングシステムでは、killallコマンドはあなたに属するすべてのプロセスを終了させます。rootの場合、またはsudo killallを発行している場合は、コンピュータを再起動させます本記事の調査中、最新版のOpenIndiana Hipster 2018.10でこの挙動を確認しました。

killallコマンドは、pkillコマンドと似たような動作をしますが、1つだけ特別な違いがあります。コマンドに検索語を渡す代わりに、正確なプロセス名を提供する必要があります。

プロセス名と部分的に一致するものは提供できず、図のようにプロセス名全体を提供する必要があります。

killall shutt killall shutter

y (less than) オプションは、指定された期間未満のプロセスを終了させることができます。

  • 秒(s)
  • m(分)
  • h
  • d(日)
  • w(週)
  • M(月、音符、大文字の「M」)。

起動したばかりのanaという名前のプロセスを終了させ、2分以内に応答すれば古いanaのインスタンスをすべて実行し続けるには、killallに次のパラメータを使用します。

killall -y 2m ana

o (earlier than) オプションは、指定された期間以上実行されているプロセスを終了させることができます。このコマンドは、1日以上実行されているすべてのssh接続を終了させます: -o

killall -o 1d sshd

驕るなかれ

これらのコマンドを使用することで、誤ったプロセスを正確かつ安全に特定し、終了させることができます。

常に気を配る。まず、殺しているプロセスが本当に必要なプロセスかどうかを確認します。2つ目は、ダブルチェックです。注意深く、対象のプロセスが終了させたいプロセスであることを確認することです。納得がいったら、終了に進みます。

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ