Linuxでは、実行中のサービス、アプリケーション、またはスクリプトのインスタンスはプロセスと呼ばれます。コマンド、プログラム、またはアプリケーションを実行すると、そのためのプロセスが作成されます。各プロセスには、特定のユーザーとグループに関連付けられた独自のプロセスIDがあります。プロセスが大量のリソースを消費したり、応答しなくなったりした場合は、それらを強制終了する必要があります。この場合、killコマンドを使用して、サーバーを再起動せずにプロセスを停止できます。
この投稿では、Linuxで実行中のプロセスを強制終了する方法を紹介します。
前提条件
- Atlantic.NetクラウドプラットフォームでLinuxを実行しているサーバー
- サーバーで構成されているrootパスワード
Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。少なくとも1GBのRAMを搭載したLinuxオペレーティングシステムを選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
Linuxで実行中のプロセスを表示
実行中のすべてのプロセスのリストを取得する最も簡単で簡単な方法は、topコマンドを使用することです。以下に示すようにtopコマンドを実行して、実行中のすべてのプロセスを一覧表示できます。
top
実行中のすべてのプロセスが次の出力に表示されます:
Tasks: 344 total, 1 running, 297 sleeping, 0 stopped, 0 zombie %Cpu(s): 22.6 us, 6.0 sy, 0.1 ni, 67.1 id, 3.9 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 7580260 total, 2103076 free, 3174408 used, 2302776 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 3901388 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 5994 vyom 20 0 44344 4160 3444 R 11.8 0.1 0:00.03 top 2206 vyom 20 0 1046476 89792 60368 S 5.9 1.2 1:15.26 Xorg 2359 vyom 20 0 3471324 216412 97596 S 5.9 2.9 1:58.27 gnome-shell 2745 vyom 20 0 1776552 136144 99424 S 5.9 1.8 1:09.93 skypeforlinux 2775 vyom 20 0 37.371g 169524 117660 S 5.9 2.2 1:05.09 skypeforlinux 5655 root 20 0 0 0 0 I 5.9 0.0 0:00.30 kworker/u8:3-ev 1 root 20 0 160356 9464 6632 S 0.0 0.1 0:03.50 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp 6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-kb 9 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq 10 root 20 0 0 0 0 S 0.0 0.0 0:00.40 ksoftirqd/0 11 root 20 0 0 0 0 I 0.0 0.0 0:03.58 rcu_sched 12 root rt 0 0 0 0 S 0.0 0.0 0:00.01 migration/0 13 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/0 14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0 15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/1 16 root -51 0 0 0 0 S 0.0 0.0 0:00.00 idle_inject/1
kを押してプロセスIDを入力すると、トップインターフェイスから直接プロセスを強制終了できます。
psコマンドを使用してプロセスを見つける
psは、実行中のプロセスの完全なリストを指定された形式で表示するコマンドラインユーティリティです。
psコマンドの基本的な構文を以下に示します。
ps [OPTION]
各オプションの簡単な説明を以下に示します:
- -a –すべてのユーザーの実行中のプロセスを表示します。
- -u –各プロセスに関する詳細情報を表示します。
- -x –デーモンによって制御されるプロセスを表示します。
たとえば、次のコマンドを実行して、すべてのプロセスの詳細なプロセスリストを取得します。
ps aux
次の出力が得られます:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.1 0.1 160356 9464 ? Ss 15:51 0:03 /sbin/init splash root 2 0.0 0.0 0 0 ? S 15:51 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? I< 15:51 0:00 [rcu_gp] root 4 0.0 0.0 0 0 ? I< 15:51 0:00 [rcu_par_gp] root 6 0.0 0.0 0 0 ? I< 15:51 0:00 [kworker/0:0H-kb] root 9 0.0 0.0 0 0 ? I< 15:51 0:00 [mm_percpu_wq] root 10 0.0 0.0 0 0 ? S 15:51 0:00 [ksoftirqd/0] root 11 0.1 0.0 0 0 ? I 15:51 0:03 [rcu_sched] root 12 0.0 0.0 0 0 ? S 15:51 0:00 [migration/0] root 13 0.0 0.0 0 0 ? S 15:51 0:00 [idle_inject/0] root 14 0.0 0.0 0 0 ? S 15:51 0:00 [cpuhp/0] root 15 0.0 0.0 0 0 ? S 15:51 0:00 [cpuhp/1] root 16 0.0 0.0 0 0 ? S 15:51 0:00 [idle_inject/1] root 17 0.0 0.0 0 0 ? S 15:51 0:00 [migration/1] root 18 0.0 0.0 0 0 ? S 15:51 0:00 [ksoftirqd/1] root 20 0.0 0.0 0 0 ? I< 15:51 0:00 [kworker/1:0H-kb] root 21 0.0 0.0 0 0 ? S 15:51 0:00 [kdevtmpfs] root 22 0.0 0.0 0 0 ? I< 15:51 0:00 [netns]
上記のコマンドは、実行中のすべてのプロセスを表示します。 grepコマンドをpsコマンドと一緒に使用して、特定のプロセスのPIDを取得できます。
たとえば、ApacheプロセスのPIDを取得するには、次のコマンドを実行します。
ps aux | grep apache
次の出力が得られます:
root 1309 0.0 0.0 73992 4748 ? Ss 15:52 0:00 /usr/sbin/apache2 -k start www-data 1310 0.0 0.0 1285068 4620 ? Sl 15:52 0:00 /usr/sbin/apache2 -k start www-data 1311 0.0 0.0 1285068 4644 ? Sl 15:52 0:00 /usr/sbin/apache2 -k start
pidofを使用することもできます 特定のプロセスのPIDを取得するコマンド。
pidof apache2
次の出力が得られます:
1311 1310 1309
Linuxでプロセスを強制終了する
この時点で、任意のプロセスのPIDを取得する方法を知っています。これで、killコマンドを使用して、実行中のプロセスを強制終了できます。
単一のプロセスを強制終了するには、次のコマンドを実行します。
kill PID
または
kill -9 PID
複数のプロセスを強制終了するには、次のコマンドを実行します。
kill -9 PID1 PID2 PID3
名前でプロセスを強制終了することもできます。 スキルを使用できます 名前でプロセスを強制終了するコマンド。
Apacheプロセスを強制終了するには、次のコマンドを実行します。
pkill apache2
killallを使用することもできます 名前でプロセスを強制終了するコマンド:
killall mysqld
結論
この投稿では、Linuxでプロセスを見つけて強制終了する方法について説明しました。サーバーを再起動せずに、応答しないプロセスを自分で強制終了できるようになりました。 Atlantic.NetのVPSホスティングでお試しください!