IT

プロセス管理、プロセスの実行優先度【LPIC level1】

目次

  • プロセスの監視
  • プロセスの監視(psコマンド、topコマンド、)
  • プロセスの終了(killコマンド、シグナル、pgrepコマンド、killallコマンド、pkillコマンド)
  • ジョブ管理(バックグラウンドの実行、フォアグラウンドとバックグラウンド)
  • システムの状況把握
  • 端末の活用
  • プロセスの実行優先度
  • コマンド実行時の優先度指定
  • 実行中のプロセスの優先度変更(reniceコマンド)

プロセスの管理

プロセスとは、動作中のプログラムをオペレーションシステムが管理する基本単位です。

プロセスの監視

プロセスの生存期間は様々であり、サーバプログラムのように長時間にわたるものもあれば、多くのコマンドのように一瞬で結果を出して終了するものもあります。

psコマンド

現在実行されているプロセスを表示するには、psコマンドを使います。

オプション説明
a他のユーザのプロセスも表示します。
(xオプションとの併用で全てのプロセスを表示します。)
fプロセスの親子関係をツリー状で表示します。
uプロセスの実行ユーザ名も表示します。
x制御端末のないデーモン等のプロセスも表示します。
-e全てのプロセスを表示します。
-f完全なフォーマットでプロセスを表示します。
-p|p PID指定したPID((プロセスID)のプロセス情報を表示します。
-l|l親プロセスのPIDや実行優先度を決定するnice値なども合わせて表示します。

topコマンド

現在実行中のプロセスを継続的に監視するには、topコマンドを使います。

topコマンドでは、プロセスごとのCPUやメモリの使用状況が確認できます。

  • 1行目にはシステムの稼働状況
  • 2行目には実行プロセス数
  • 3行目にはCPUの状態
  • 4、5行目にはメモリとスワップの状況が表示
  • それ以降の行には、プロセスごとの情報が表示

プロセスの終了

killコマンド

プロセスに終了させるには、killコマンドを使います。

以下、killコマンドの書式です。

  • kill [-シグナル名またはシグナルID] PID
  • kill -s [シグナル名またはシグナルID] PID
  • kill -SIGシグナル名 PID

killコマンドは、プロセスに対してシグナルを送信します。

シグナル

シグナルとは、プロセスへ送られるメッセージです。

プロセスはシグナルを受け取ると、終了や再起動など受け取ったシグナルに応じた動作を実行します。

以下、主なシグナルです。

シグナル名シグナルID動作
HUP1ハングアップ(端末が制御不能もしくは切断による終了)
INT2キーボードからの割り込み(Ctrl+Cキー)
KILL9強制終了
TERM15終了(デフォルト)
CONT18停止しているプロセスを展開
STOP19一時停止

pgrepコマンド

pgrepコマンドは、指定した名前のプロセスに対応するPIDを表示します。

オプション説明
-u ユーザ名プロセスの実行ユーザを指定します。
-g グループ名プロセスの実行グループを指定します。

killallコマンド

killコマンドではPIDを指定する必要がありますが、killallコマンドを使うと、プロセス名で指定することが出来ます。

  • killall -[シグナル名またはシグナルID] プロセス名
  • killall -s [シグナル名またはシグナルID] プロセス名
  • killall -SIGシグナル名 プロセス名

pkillコマンド

killallコマンドと同様に、プロセス名を指定してシグナルを送るコマンドにpkillコマンドがあります。

オプション説明
-u ユーザ名プロセスの実行ユーザを指定します。
-g グループ名プロセスの実行グループを指定します。

ジョブ管理

ジョブとは、ユーザーがコマンドやプログラムをシェル上で実行するひとまとまりの処理単位です。

シェル上で1つのコマンドを実行したものも、複数のコマンドをパイプでつないで実行したものも、いずれも1つのジョブになります。

ジョブは、フォアグラウンドもしくはバックグラウンドで実行されます。

バックグラウンドジョブの実行

フォアグラウンドでジョブが実行されていると、キーボードからの入力はすべてそのジョブに渡されます。つまり、そのジョブが終了するまで、シェル上で他の作業は出来ないことになります。

処理に時間がかかるジョブはバックグラウンドで実行すると、ジョブに終了を待たずにシェルを使うことが出来ます。

実行中のジョブはjobsコマンドで参照することが出来ます。

ログアウトした後もプログラムを実行させたい場合は、nohupコマンドを使います

フォアグラウンドとバックグラウンド

現在実行中のジョブのモードを変更するには、bgコマンドあるいはfgコマンドを使います。

システムの状況把握

システムの状況を把握するには、先に紹介したtopコマンドが便利ですが、そのほかにもいくつかのコマンドがあり、状況に応じて使い分けます。

まず、メモリの利用状況、空き状況を確認するには、freeコマンドを使います。

オプション説明
-mMB単位で表示します
-s 秒指定した間隔で表示し続けます。

システムの稼働時間や平均付加は、uptimeコマンドで確認できます。

システムのアーキテクチャやOSを確認するにはunameコマンドを使います。

端末の活用

サーバ管理では、端末エミュレータを使ってネットワーク経由でサーバを操作するのが一般的です。

tmuxやscreenは、1つの端末画面の中に複数のウィンドウ(仮想端末)を作成し、切り替えて作業することが出来るソフトウェアです。

プロセスの実行優先度

プロセスの実行優先度があり、必要に応じて優先度の指定を行うことが出来ます。

優先度の高いプロセスは、優先度の低いプロセスよりもより多くのCPU時間を割り当てられるので、結果として単位時間当たりにこなせる処理がより多くなります。

実行されているプロセスの優先度を確認するには、topコマンドもしくはps -lコマンドを使います。

コマンド実行時の優先度指定

プロセスの実行優先度を高くしたり低くしたりするために指定する値がナイス値です。

ナイス値は-20から19まであり、ナイス値が小さいほど優先順位が高くなります。

最も優先順位が高くなるのは-20です。

ナイス値を指定するにはniceコマンドを使います。

実行中プロセスの優先度変更

reniceコマンド

すでに実行中のプロセスのナイス値を変更するにはreniceコマンドを使います。

reniceコマンドでは、PIDを指定して特定のプロセスの優先度を変更するほか、ユーザを指定して、そのユーザの実行しているプロセスに対して優先度の変更をすることもできます。

高い優先度を設定できるのはrootユーザだけです。

最後まで読んで頂き、ありがとうございました。

他の分野へ移動できる全体ページへは下記リンクから移動できます。