このハウツーでは、ターミナルエミュレータを使ってプロセスを識別し、強制終了する様々な方法を紹介します。プロセスとは、Linuxマシン上で実行されているアプリケーションやスクリプトのことです。プロセスがクラッシュしたり、メモリを大量に消費したりすることがあり、そのような場合には介入してプロセスを「強制終了」する必要があります。もちろん、これを行うためのツールは数多くあります。ここでは、様々なアプローチとツールを用いてプロセスを識別し、強制終了する方法を紹介します。
これらのコマンドに慣れるまでは、プロセスを強制終了して作業内容が失われないように注意することが重要です。可能な限り、マシン上で現在使用されていないアプリケーションを強制終了するプロセスの例として使用してください。
このハウツーで紹介するコマンドはすべて、ほとんどのLinuxマシンで動作します。Ubuntu 20.04を使用していますが、Raspberry Piでも実行できます。ハウツーはすべてターミナル経由で行います。ほとんどのLinuxマシンでは、Ctrl、Alt、Tキーを押すことでターミナルウィンドウを開くことができます。
Linuxで既知のアプリケーションを強制終了する方法
まず、ソフトウェアアプリケーションを開き、ターミナルでkillallコマンドを使ってアプリケーションを終了しましょう。ここでは、無料かつオープンソースのベクターグラフィックパッケージであるInkscapeを例に挙げていますが、現時点で何の用途にも依存していない限り、何を使っても構いません。
killall コマンドを使用すると、指定したアプリケーションにリンクされているすべてのプロセスが強制終了されます。後ほど、kill コマンドを使用して特定のプロセスを強制終了する方法を説明します。
1.システム GUI からInkscape または別のテスト アプリケーションを起動します。
2. ターミナルで、killallコマンドを使用してInkscapeのすべてのプロセスを強制終了します。このコマンドを実行すると、Inkscapeが即座に終了するはずです。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
killall inkscape
Linuxにおけるさまざまなプロセスの識別
ソフトウェアアプリケーションは多くの場合、多数のプロセスを実行しており、どのプロセスが問題の原因になっているかを特定してみることが有効です。例えば、ChromiumやFirefox全体ではなく、ブラウザウィンドウ1つが問題の原因になっている可能性があります。その場合、アプリの他の部分は実行したまま、問題のあるプロセスのみを終了できます。ターミナルのtopツールを使用して、問題のあるプロセスを確認し、操作を行い、強制終了することができます。
1.ターミナルでトップツールを起動します。起動すると、ターミナルにすべてのプロセスとそのステータスに関する情報が表示されます。トップ画面の2行目には、現在実行中のタスクと、スリープ状態、停止状態、またはゾンビ状態のタスクの総数が表示されます。その下にはプロセスのリストが表示され、この情報はデフォルトで3秒ごとに更新されます。
top
2. iを押すと、現在アクティブなプロセスのみが表示されます。これは、現在実行中のプロセスのみに関心がある場合に非常に便利で、リストが読みやすくなります。
3. Zキーを押すと、上部のインターフェースに色が追加され、読みやすくなります。これはテキストベースのインターフェースなので、色を追加するとラベルとデータの区別がしやすくなります。
4. Inkscape または他の必須ではないアプリケーションを起動します。
5. Inkscapeのリストを見つけて、PIDをメモします。PIDはプロセスを識別するために割り当てられた番号で、出力結果の最初の列に表示されます。この例ではInkscapeのPIDは4582でしたが、Inkscapeを実行するたびにPIDは異なります。
6. k キーを押して、PID 番号を入力してプロセスを終了します。
7. Enterキーを押すと、「Send pid 4582 signal [15/sigterm]」というメッセージが表示され、このプロセスを強制終了することを確認します。もう一度Enterキーを押して確認し、プロセスを強制終了します。
8. q キーを押してtopを閉じ、ターミナルエミュレータに戻ります。多くの場合、 topでプロセスを簡単に確認してからターミナルに戻りたいでしょう。
top の外で個別のプロセスを強制終了する
場合によっては、topコマンドの外で個々のプロセスを強制終了したいこともあるでしょう。topコマンドで取得したPID番号とkillコマンドを組み合わせて使用することで、これを実現できます。ただし、先ほど使用したkillallコマンドは個々のPIDでは機能しないことに注意してください。
1. Inkscapeまたは他のアプリケーションを起動します。アプリケーションの選択は特に重要ではありませんが、そのアプリケーションで作業していないことを確認してください。
2.ターミナルでtopを起動します。iとzを押して結果を絞り込み、topテーマに色を追加します。
top
3.終了するアプリケーションのPIDを特定し、メモします。この例では、InkscapeのPIDは4582でした。
4. qを押してtop を終了します。
5.ターミナルエミュレータから、killコマンドとPID番号を使用してInkscapeプロセスを強制終了します。以下の例のPID値を、ご自身のPIDに置き換えてください。
kill 4582
top を使用すると、不正な動作をしているプロセスを識別するための優れた検出ツール セットが提供され、多くの場合、応答しないプロセスを適切に閉じながら、アプリケーション内の他のデータを保存できるようになります。
psプロセスレポートを使用してプロセスを強制終了する
topの代わりに、実行中のすべてのプロセスのレポートを生成するように設計されたpsコマンドを使用することもできます。
1. Inkscapeまたは他のアプリケーションを起動します。アプリケーションの選択は特に重要ではありませんが、そのアプリケーションで作業していないことを確認してください。
2. psコマンドを2つの引数付きで実行します。 - e引数はすべてのプロセスを表示し、-f引数はシステム標準の構文に従います。
ps -ef
3. grepを使ってレポートをフィルタリングし、「inkscape」だけを検索します。典型的なps -efの出力は非常に密度が高く、数十個の実行中のプロセスが詰め込まれています。フィルターを使うと、アプリケーション名を検索できます。PIDはユーザー名の直後の2列目にあります。アプリケーションには複数のPIDが表示される場合がありますが、ここで必要なのはアプリケーション名だけが表示されるPIDです。
ps -ef | grep inkscape
4. PIDを指定してkillコマンドを実行し、プロセスを強制終了します。今回の場合、InkscapeのPIDは19166でした。
kill 19166
プロセス管理は習得すべき重要な Linux スキルであり、実際の状況で展開する必要がある前に、時間をかけてこれらのアプローチを練習する価値があります。