| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
編集の要約なし
==[[Linux プロセスの作成、監視、強制終了]]==
[[Linux]] | [[Linux コマンド]] |
{{amazon|487311070X}}
*カーネルは、システムで動作中のプログラムをプロセスとみなす
*シェルもプロセス
===プロセスに関連付けられる属性と概念プロセスに関連付けられる属性と[[概念]]===
====生存期間====
*プロセスは実行すると生存する
*メッセージの送信にはプロセス間通信が使用される
*シグナルは単一の値
*Linuxにはおよそ30個のシグナルが定義されている[[Linux]]にはおよそ30個のシグナルが定義されている
===よく使用されるシグナル===
{|class="wikitable"
|強制終了。無条件かつ直ちに動作を停止。プロセスがこの信号を蒸しすることはできない
|-
|TERMTE[[R]]M
|15
|通常の手段で終了する
kill [ -sigspec] [pids s- sigspec ]
*sigspecには、シグナルの値を整数値またはシグナル名(SIGHUPやHUPなど)で指定する
*sigspecを指定しないと、SIGTERMを指定したものと解釈されるsigspecを指定しないと、SIGTE[[R]]Mを指定したものと解釈される
kill -l [signum]
*この場合、killは有効なシグナル名を一覧表示する
==プロセスの終了==
*サービスで障害が発生したら、そのサービスの種類に応じてpsまたはtopを使って問題のあるプロセスを特定することができる
*問題のあるPIDが分かれば、killコマンドを使ってそのプロセスにSIGTERMシグナルを起こり、素のプロセスを規程の手順で終了することができる問題のあるPIDが分かれば、killコマンドを使ってそのプロセスにSIGTE[[R]]Mシグナルを起こり、素のプロセスを規程の手順で終了することができる
==シェルのジョブ制御==
*Linuxと最新のUnixには、ジョブ制御という機能が用意されている[[Linux]]と最新のUnixには、ジョブ制御という機能が用意されている
*実行中のコマンドをシェル(カーネルのサポートも必要)がバックグラウンドに配置し、そこで実行を続けること
*バックグラウンドで実行している時には、シグナルを送る以外にプロセスの入力が必要ない
*実行中のジョブを表示する
==プロセスの実行優先度を変更する==
*他のタスクよりも多くの実行時間を必要とするようなタスクの実行頻度を上げ、タイムスライスを長くしたい場合に対処するため、各プロセスには優先度が割り当てられている。他のタスクよりも多くの実行時間を必要とするようなタスクの実行頻度を上げ、タイム[[スライス]]を長くしたい場合に対処するため、各プロセスには優先度が割り当てられている。
*通常はカーネルが自動的に処理する
*カーネルは数多くの要因にしたがい、各プロセスの優先度を動的に変更している
*要因には、プロセスが消費したシステム時間やプロセスの状態(I/O待ちのプロセスが多い。カーネルが優先するのはこの種のプロセス)などがある
*各プロセスの優先度は、topコマンドまたはps -lコマンドの出力結果PRI列を調べれば分かるlコマンドの出力結果P[[R]]I列を調べれば分かる
===nice===
*カーネルがプロセスに優先度を割り当てる際に考慮する要因の一つに、ユーザーが提供するナイス値がある
*ナイス値は、-20~+19の範囲
*ナイス値を下げ(優先度を上げ)ることが出きるのは、スーパーユーザーのみ
# nice --10 [[vi ]] /etc/hosts.deny
===renice===
*target で指定した1つ以上の実行中のプロセスにnicenumberで指定したナイス値を設定して優先度を変更する
renice [-]nicenumber [option +] target

案内メニュー