Linuxでバックグラウンドプロセスを強制終了する方法
1. 概要
プロセスを強制終了する方法はいくつかあります– タスク– とも呼ばれ、それらのほとんどはターミナルでコマンドを実行することを含みます。
このチュートリアルでは、バックグラウンドプロセスに関連する方法に焦点を当てます。
2. 始める前に
2.1. killコマンド
Linuxでプロセスを強制終了するために使用される基本的なコマンドはkillです。 このコマンドは、プロセスのID、または終了するPID –と連動して機能します。
PIDに加えて、後で説明するように、他の識別子を使用してプロセスを終了することもできます。
kill コマンドは、終了信号を取り込みます。これは、いくつかの値のいずれかを持つことができます。
- SIGINT(2)–端末で Ctrl +Cを押した場合と同じ結果になります。 プロセスが自動的に終了することはありません
- SIGQUIT(3)– SIGINTと同じことを行いますが、コアダンプを生成するという追加の利点があります
- SIGKILL(9)–プロセスを強制的に終了します。 無視したり、正常にシャットダウンしたりすることはできません
- SIGTERM(13)–プロセスを終了しますが、正常にシャットダウンする時間を与えます
終了信号を指定しない場合は、デフォルトのSIGTERM(13)が使用されます。
2.2. 背景対。 前景
また、バックグラウンドプロセスとフォアグラウンドプロセスの違いに注意してください。
フォアグラウンドプロセスは、次のように、直接実行して完了するのを待つコマンドまたはプロセスです。
$ ls -l
total 716
-rwxr-xr-x 1 root root 1563 oct 23 2016 espdiff
-rwxr-xr-x 1 root root 117104 sep 26 2019 gnome-mahjongg
-rwxr-xr-x 1 root root 125304 sep 13 2019 gnome-mines
-rwxr-xr-x 1 root root 178712 sep 10 2019 gnome-sudoku
-rwxr-xr-x 1 root root 302336 sep 15 2019 sol
一方、バックグラウンドプロセスは、シェルが待機しないプロセスです。 バックグラウンドプロセスを実行するには、「 &」 プロセスの最後に開始したいもの:
$ ./myScript.sh &
3. 実際にプロセスを停止する方法
最初に述べたように、ほとんどの場合、 kill コマンドと組み合わせてPIDが必要ですが、これから説明するように、それが唯一の方法ではありません。
3.1. ps
psコマンドは、Linuxのプロセスを一覧表示するために使用されます。 ここでは、 -eaf を追加して、必要な情報を取得します。
$ ps -eaf
UID PID PPID C STIME TTY TIME CMD
baeldung-reader 3208 2578 0 14:20 ? 00:00:01 /usr/share/skypeforlinux/sky
baeldung-reader 3226 2578 2 14:20 ? 00:00:06 /snap/slack/24/usr/lib/slack
baeldung-reader 3230 3208 0 14:20 ? 00:00:00 /usr/share/skypeforlinux/sky
baeldung-reader 3232 3230 0 14:20 ? 00:00:00 /usr/share/skypeforlinux/sky
baeldung-reader 3277 3208 0 14:20 ? 00:00:00 /usr/share/skypeforlinux/sky
baeldung-reader 3280 3208 0 14:20 ? 00:00:00 /usr/share/skypeforlinux/sky
baeldung-reader 3325 3208 3 14:20 ? 00:00:08 /proc/self/exe --type=render
baeldung-reader 3363 3226 0 14:20 ? 00:00:00 /snap/slack/24/usr/lib/slack
baeldung-reader 3398 3226 0 14:20 ? 00:00:00 /snap/slack/24/usr/lib/slack
baeldung-reader 3411 2578 12 14:20 ? 00:00:29 /opt/google/chrome/chrome
baeldung-reader 3417 3411 0 14:20 ? 00:00:00 cat
baeldung-reader 3418 3411 0 14:20 ? 00:00:00 cat
baeldung-reader 3423 3226 0 14:20 ? 00:00:00 /snap/slack/24/usr/lib/slack
baeldung-reader 3426 3411 0 14:20 ? 00:00:00 /opt/google/chrome/chrome --
baeldung-reader 3428 3411 0 14:20 ? 00:00:00 /opt/google/chrome/chrome --
baeldung-reader 3429 3428 0 14:20 ? 00:00:00 /opt/google/chrome/nacl_help
baeldung-reader 3432 3428 0 14:20 ? 00:00:00 /opt/google/chrome/chrome --
baeldung-reader 3434 3426 0 14:20 ? 00:00:00 /opt/google/chrome/nacl_help
baeldung-reader 3441 3208 0 14:20 ? 00:00:00 /usr/share/skypeforlinux/sky
baeldung-reader 3456 3226 5 14:20 ? 00:00:12 /snap/slack/24/usr/lib/slack
baeldung-reader 3482 3411 1 14:20 ? 00:00:03 /opt/google/chrome/chrome --
baeldung-reader 3531 3426 3 14:20 ? 00:00:09 /opt/google/chrome/chrome --
baeldung-reader 3533 3531 0 14:20 ? 00:00:00 /opt/google/chrome/chrome --
baeldung-reader 3603 3432 3 14:20 ? 00:00:07 /opt/google/chrome/chrome --
baeldung-reader 3617 3432 3 14:20 ? 00:00:08 /opt/google/chrome/chrome --
baeldung-reader 3631 3432 0 14:20 ? 00:00:01 /opt/google/chrome/chrome --
baeldung-reader 3870 3432 5 14:21 ? 00:00:11 /opt/google/chrome/chrome --
baeldung-reader 3892 3432 25 14:21 ? 00:00:57 /opt/google/chrome/chrome --
baeldung-reader 3905 2892 9 14:21 ? 00:00:22 ./jetbrains-toolbox --minimi
psを実行した後、終了するプロセスのPIDを視覚的にスキャンし、killコマンドを実行してPIDを渡します。
$ sudo kill -9 3905
3.2. pgrep
pgrepコマンドは名前でプロセスを検索し、一致するたびにPIDを返します:
$ pgrep chrome
733
3638
11679
11736
11776
11848
11850
12193
12208
12240
12275
14705
17372
18003
18378
18526
18540
18736
22401
23844
$ sudo kill -9 733
3.3. pkill
pkillは、プロセス名を使用して、バックグラウンドプロセスを直接強制終了できるコマンドの1つです。
たとえば、RabbitMQのすべてのインスタンスを停止する場合は、次を使用できます。
$ sudo pkill rabbitmq
3.4. ジョブ
プロセスを強制終了する別の方法は、そのジョブ番号を使用することです。 これは、jobsコマンドが役立つところです。
まず、いくつかのジョブを開始しましょう。
$ sleep 100 &
[1] 24827
$ sleep 200 &
[2] 24832
各コマンドの後に、ジョブIDとPIDが表示されることに注意してください。
ジョブを使用してそれらを一覧表示できます。
$ jobs
[1]- Running sleep 100 &
[2]+ Running sleep 200 &
そしてジョブIDで殺すことができます:
$ kill %1 # Here 1 is the job number. We can also kill job number 2 if we want in the same way
$ jobs
[1]- Terminated sleep 100
[2]+ Running sleep 200 &
3.5. killall
プロセスのPIDを使用するkill、とは対照的に、 killallコマンドは名前を取り、暗黙的に、その名前を持つすべてのプロセスを強制終了します。
これは、たとえば、複数のタブが開いているフリーズしたWebブラウザ(ChromeやFirefoxなど)がある場合に便利です。 ブラウザで実行されているすべてのプロセスを簡単に強制終了し、次を使用して閉じることができます。
$ killall chrome
$ killall firefox
4. ボーナス
4.1. fg
fgは、バックグラウンドプロセスをフォアグラウンドにするために使用されるコマンドです。 次に、 Ctrl + C :を使用してプロセスを停止できます。
$ sleep 100 &
[1] 25994
$ jobs
[1]+ Running sleep 100 &
$ fg 1
sleep 100
^C
$
4.2. システムモニター
プロセスを終了する別の方法は、システムモニターを起動することです。これは、LinuxでWindowsタスクマネージャーに相当します。 それを起動するには、次を実行します。
$ gnome-system-monitor
マシンにインストールされていない場合は、次を使用してインストールします。
$ sudo apt-get install gnome-system-monitor
システムモニターでは、現在実行中のすべてのプロセスのリストを確認できます。 プロセスを強制終了するには、そのリストをナビゲートし、プロセスを右クリックして、killオプションを選択します。
5. 結論
この記事では、Linuxでバックグラウンドプロセスを強制終了する方法を学びました。
Linuxエコシステムのさまざまなコマンドを使用して、さまざまな方法でプロセスを強制終了できます。 また、端末に入力したくない場合は、代わりにいつでもシステムモニターを使用できます。