Linuxの基本を学習中、プロセスについての初歩的な知識と、操作方法を知識定着の為まとめてみる。
プロセス
プロセス:
メモリ上で実行状態にあるプログラムのこと。
プロセスIDという一意のIDで管理されているので、同じコマンドが同時に複数実行されても、
データが混じったりすることはない。
####プロセスの確認方法
$ ps
PID TTY TIME CMD
3007 pts/0 00:00:00 bash
3035 pts/0 00:00:00 less
3040 pts/0 00:00:00 less
3043 pts/0 00:00:00 ps
↑↑ psコマンドで現在実行中のプロセスを表示。
lessが2回実行されてるが、PID(プロセスID)で区別されてる。
プロセスを確認する際によく使われるpsコマンドのオプションが以下↓↓
オプション | 意味 |
---|---|
x | psコマンドを実行したユーザーのプロセス全てを表示 |
ux | psコマンドを実行したユーザーのプロセス全てを,詳細情報を合わせて表示 |
ax | 全てのユーザーのプロセスを表示 |
aux | 全てのユーザーのプロセスを詳細情報と合わせて表示 |
※これらのオプションは、-(ハイフン)が不要。
####プロセスの終了方法
killコマンドで、PIDを引数に指定。
さっきのpsコマンドの実行結果でPIDを確認した後
kill 3040
これでさっきのpsコマンドで表示された
上から3つ目のlessコマンドのプロセスが終了。
ちなみに
killコマンドは、プロセスを終了させるコマンドではなく、正確にはシグナルを送信するコマンド
です。
デフォルトでTERM
というシグナルを送信している。
kill 3040
kill -TERM 3040
kill -15 3040
これ↑は全部同じ処理をしている。
どういうことかというと、「3040(のプロセス)
」を「TERM(終了させるシグナル)
」で「kill(送信)
する」と言い換えれる。
3番目の-15は何かというと、kill -lでkillコマンドの利用可能なシグナルの一覧が見れる
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...省略...
(頭にSIGがついています)
TERMが15番目にあるのでオプションを指定する時のように -15を指定するとTERMが指定されます。
killコマンドはデフォルトでシグナルがTERMになっている為、何も指定しなければ、プロセスを終了するシグナルを送信します。
kill -lで表示したリストの中にKILLのシグナル
も9番目(SIGKILL)にあり、
これもプロセスを終了するシグナルですが、TERMプロセスを受け付けなくなった、異常なプロセスを終了させるときに使う最終手段
として使うことが多いらしい。
##まとめ
- プロセスとは実行中のプログラムのこと。
- psコマンドで実行中のプロセスを確認できる。
- psコマンドにオプションをつけると、表示されるプロセスの情報を変えられる。
- kill <プロセスID>でプロセス(実行中のプログラム)を終了させることができる。
- killコマンドはシグナルを送信するコマンド。シグナルは複数あり、指定することでプロセスを終了する以外の振る舞いもできる。