【プロセスの管理について】


このHPはプロセスの管理についてまとめたもの です。


1-1  プロセスの監視

プロセスとは、動作中のプログラムやコマンドをOSが管理す る基本単位。 プログラムを実行すると、新しいプロセスが生成される。プロセスの生 存期間は様々であり、サーバープロ グラムの様に長時間わたるものもあれば、多くのコマンドのよう に、一瞬で結果を出して終了してしまうものもある。
実行中のプロセスを表示するコマンドは、psコマンド を使用する。psコマンドの書式は以 下のとおり。

【書 式】ps [オプション]


psコマンド出力のうち、psコマンド 先頭の1行に表示される項目の説明 は以下のとおり。



psコマンドの主なオプションは以下のとおり。




◆topコマンド

実行中のプロセスの情報を 継続的に表示するには、topコマンド を使う。
topコマンドの実行中には、下記【主な対話コマ ンド】の様な対話コマンドを使用できる。

topコマンドの書式は次のとお り。

【書 式】top [オプション]








プロセスによっては実行中に他のプロセスを起動するものもある 。元のプロセスを親プロセス、親プロセスから起動されたプロセ スを子プロセスと呼ぶ。 、psコマンドに-fオプションをつけるか、 pstreeコマンドを使用する。 pstreeコマンドの書式は次のとおり。


【書 式】pstree [オプション]


【主なオプション】

-c  同じ内容のプロセスをまとめて表示する
-p  PIDも表示する









1-2 プロセスの終了

プロセスを終了させるには、 、killコマンドを使う。killコマンドは指定したプロセスにシグナルを送信するコマ ンド。
シグナルには、シグナル名とシグナルIDがつけられて おり、killコマンドでは何れかを指定することになる。killコマ ンドの書式は次のとおり

【書 式】kill [-シグナル名またはシグナルID]<プロセスID>
※  []内は省略可能 <>は必須

シグナ ルは30種類以上あり、kill -lコマンドを実行すると、利用できる シグナルの一覧が表示される。主なシグナル名とシグナルIDは以下 のとおり







1-3 ジョブ管理

コマンドを指定して実行させると、それはジョブと呼ばれる実行単位になる。例えば、

man  cat

を実行すると、内部では

● man(manコマンド自身を起動)
●sh (圧縮されているcatドキュメントファイルを解凍する)
● less(lessで表示する)

とい う3つのプログラムが実行されている。この小さな実行単位が「プ ロセス」。
シェル上で1つのコマンドを実行したものも、 複数のコマンドをパイプでつないで実行したものも、いずれも1 つのジョブとなる。




◆フォアグラウンドジョブとバックグラウンドジョブ

Linuxでは、複数のコマンドを同時に実行する ことができる。これは『複数のジョブを同時に実行している 』ということになる。しかし、キーボードとディスプレイはひと組しかないので、ほかのジョブは見えない ところで走っていることになる。

現在、キーボード入力などの対話ができるものを「フォアグラウンドジョブ」、そうで ないものを「バックグラウンドジョブ」という。

 

●フォアグラウンドジョブ⇒現在ユーザーが操作できるジョブ

●バックグラウンドジョブ⇒裏で走っているジョブ

 

コマンドラインから通常の指定でコマンドを入力すると、それはフォアグラウンドジョブになる。その間、キーボードから何も入力できない状態に なる。この様な時、コマンドをバックグラウンドで走るように指定すると、コマンド入力後、 すぐにプロンプトが表示され、次の作業が可能になる。

実行のジョブは、jobsコマンド で参照することが出来る。ジョブ番号は、ジョブが開始された順につ けられる。





ジョブ番号の後ろの「+」は現在実行中のジョブを、 「-」は直前に実行されたジョブを、「無印」はそれより前に実行 したプロセス。 また、 現在のジョブの状態は下記の様に表す。

●『 Running』・・・ジョブをバックグラウンドで実行中
●『 stopped』・・・ジョブの実行を一時停止中


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

【書 式】nohup 【コマンド】


◆フォアグラウンドとバックグラウンドのモード変更

現在実行中のジョブモード(フォアグラウンドとバックグラウンド)を変更 するには、『bgコマンド』か『fgコマンド』 を使う。

すでにフォアグラウンドで実行中のジョブをバックグラウンドで実行するには、Ctrl+Zキーでジョブを一時停止(サスペンド)させ、次にジョブ番号を引数にしてbgコマンドを実行 する。

逆に、バックグラウンドで動いているジョブをフォアグ ラウンドにするには、fgコマンドを使う。bgコマンドと同様 にジョブ番号を引数にしてfgコマンドを実行する。







1-4   プロセスの優先度の管理

プロセスには優先度という設定があり、優先度が高いプロセスほどCPU処理が優先的に割り当てられる。

プロセスの優先度はナイス値という数値で指定 され、-20から19まであり、数値が小さいほど優先度が高いこ とを表す。(つまり、-20が最も高い優先度)。デフォルトではナイス値は0になっている。

実行されているプロセスの優先度を確認するには、top コマンドもしくはps -lコマンドを使う。ps -lコマンドの実行例では、PRI列が優 先順位(PRIority)となっている。

プロセスの優先度はユーザーが変更することもできる。ただし実行するときに設定するか、実行中に変更するかによって、コマンドが違う。

 

■コマンドを実行するときに優先度を指定する(nice)

コマンドを実行するときに優先度を指定するには、nice コマンドを使う。

【書式1】nice【-n ナイス値】コマンド

【書式2】nice【-ナイス値】コマンド

次の例では、優先度10でupdatedbコマンドを実行 している。

♯nice -10 updatedb

一方、マイナスの優先度を設定するには、ハイフンを2 つ使う。niceコマンドでは、-nオプションを使わずに「−」で直接指定することもできるので、 負数を表すときは「−−」とする。次の例では 優先度-10でupdatedbコマンドを実行している。

♯nice --10 updatedb

 

■実行中のプロセスの優先度を変更する(renice)

実行中のプロセスの優先度を変更するには、 実行中のプロセスをCtrl+Zキーで一時停止した後、reniceコマンドを使う。

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



なお、現在の優先度よりも高い優先度を設定できるの はスーパーユーザー(root)だけ。一般ユーザーは優先度を低くすることはできるが、高くすることはできない。

 

【書式】renice ナイス値【オプション】【コマンド】

 


次の例ではPID1000のプロセスの優先度を-10に変更 している。niceコマンドと違い、ハイフンが必要ないことに 注意すること。

renice -10 1000