UNIXやLinuxのコマンドに関する世界観(応用2.プロセス)です。
[改訂第3版]Linuxコマンドポケットリファレンスを参考にしています。
psはプロセス状態を表示するコマンド。UNIXオプション、BSDオプション、GNUロングオプションの三種類のオプションがある。killと一緒に使う。
ps [オプション]
普通は、
| オプション | 説明 |
|---|---|
| ps ax | すべてのプロセスを表示。 |
| ps aux | CPU・メモリ使用量を含めて表示。 |
とすることが多い。
ps aux
ほかに
| オプション | 説明 |
|---|---|
| r | 実行中のプロセスを表示。 |
| -u ユーザ名 | ユーザ名やユーザIDで抽出。 |
など、さまざまなオプションがある。
(最新 Debian GNU/Linux 完全攻略ガイド(天野正樹)を参考に執筆しました。)
詳しくはmanを参照してほしい。
2024.10.06編集
表示項目については、
| 表示項目 | 説明 |
|---|---|
| PID | プロセスID |
| TTY | 端末名 |
| TIME | 利用CPU時間 |
| CMD | 実行ファイルの名前 |
となる。
psコマンドにTオプションを付けると、STAT(プロセスの状態)が表示される。この状態は以下のようになる。
| 状態 | 説明 |
|---|---|
| D | スリープ(割り込み不可能) |
| R | 実行中・実行可能 |
| S | スリープ(割り込み可能) |
| T | トレース中・停止中 |
| Z | ゾンビ(死亡して親プロセスに回収されなかった状態) |
状態の付加情報として、
| 付加情報 | 説明 |
|---|---|
| s | セッションリーダー |
| l | マルチスレッド化されているプロセス |
| + | フォアグラウンドプロセス |
| < | 優先度が高い |
| N | 優先度が低い |
となる。
(「[改訂第3版]Linuxコマンドポケットリファレンス」を参考に執筆しました。)
2024.10.06編集
psのその他のオプションとして、
| オプション | 説明 |
|---|---|
| e | 環境変数とコマンド名を表示。 |
| u | CPUやメモリの使用量を表示。 |
| l | 実行状態などを表示。 |
| f | 階層的に表示。 |
| p | プロセスIDを表示。 |
などのオプションがある。以下のページが参考になる。
2024.10.06編集
killはプロセスにシグナルを送るコマンド。
kill [オプション] プロセスID
オプションは
| オプション | 説明 |
|---|---|
| -s シグナル | 送信するシグナルを指定 |
| -l シグナル | シグナルを一覧で表示。 あるいはシグナルIDの表示(シグナル名を指定した場合)。 |
たとえば、
$ kill -l (シグナルの一覧が表示される) $ kill 4444 (シグナルを送る)
-sで送信するシグナルを指定できる。何も指定しなかった場合はデフォルトで15(SIGTERM)が送信される。
上の例ではプロセスIDが4444のプロセスにSIGTERMを送信して強制終了させている。
(「[改訂第3版]Linuxコマンドポケットリファレンス」を参考に執筆しました。)
niceは実行する際の優先度(NICE値)をつけてコマンドを実行するコマンド。
nice [オプション] [コマンド]
オプションは「-n NICE値」でNICE値を指定して実行する。
NICE値は「-n 15」のように指定する。-20が最高優先度、19が最低優先度となる。niceコマンドを使わずに通常の方法でコマンドを実行した場合のNICE値は0で、NICE値を設定せずにオプションなしでniceコマンドを実行した場合はNICE値10となる。また、負の数のNICE値はrootユーザーにしか設定できない。
(「[改訂第3版]Linuxコマンドポケットリファレンス」を参考に執筆しました。)
また、reniceで優先度を変更できる。
renice NICE値 [オプション]
オプションは「-n NICE値」「-g グループ名」「-u ユーザー名」「-p プロセスID」。オプションを指定した場合はプロセスをまとめて指定できる。
たとえば、
renice -n 5 1111 1112
とすれば、実行中のプロセス1111と1112に対してNICE値を5にすることができる。
(「[改訂第3版]Linuxコマンドポケットリファレンス」を参考に執筆しました。)
プロセスの状況を表示する。
プロセスの親子関係を分かりやすくツリー表示してくれる。
プロセスにシグナルを送信する。
killallを使うと、プロセスを殺す時に、killのようなプロセスIDではなく、プロセスの名前で指定できる。同じ名前のプロセスは全部死ぬ。
killを使うよりも使いやすいが、別のプロセスまで一緒に殺さないように注意しよう。
freeは、メモリの使用状況を表示する。利用しているメモリや空きメモリを表示する。
vmstatは、仮想メモリやブロック、iostatはI/Oの状況をモニタリングできる。
vmstat、iostat、mpstat、ifstatは、サーバーのリソースをリアルタイムで表示・モニタリングするのに使えるが、それぞれひとつの種類のリソースしか表示できない。
すべての状況をひとつのターミナルで見たい時は、dstatを使う。
プロセスの状況をリアルタイムでモニタリングできる。Windowsでいうタスクマネージャと同じ。
プロセスの実行優先度を指定・変更。
そのほか、
| コマンド | 説明 |
|---|---|
| pgrep | プロセスIDを表示。 |
| pkill | プロセスにシグナルを送信。 |
| pidof | 実行中のプロセスのプロセスIDを表示。 |
| time | コマンドの実行時間・リソース使用時間を表示。 |
| nohup | シグナルを受け付けずにコマンドを実行。 |
| at | 予定した時刻にコマンドを実行。 |
などのコマンドがある。
(「[改訂第3版]Linuxコマンドポケットリファレンス」を参考に執筆しました。)
2024.10.06編集
以下のページ・書籍が参考になります。
Linuxネットワーク(モニタリング)も参照のこと。
Linuxカーネル(シグナル)も参照のこと。