MyUtils

View on GitHub

プロセスについて

プロセスの状態について

linuxのプロセスにはいくつかの状態がある。 psコマンドでS(state)の欄に表示される。

state 状態 備考
R running  
S sleep 中断可能なスリープ
D Disk sleep 中断不可能なスリープ
T stoped ctr+zのような一時停止中の状態
Z zonbie ゾンビ状態

🚨ゾンビ状態とは親プロセスと子プロセスの間で親が子の終了ステータスを受け取っていない状態で子プロセスが親プロセスに通知するために残った状態のこと。

起動時の動作について

OSは起動時に初期化処理後initプロセスが呼ばれる。 古いディストリビューションでは/sbin/init/initだったが、 今は/lib/systemd/systemdになりつつある。


/procフォルダについて

/procフォルダの中には実行中のプロセス毎の情報が格納される。 psやtopコマンドはprocフォルダから情報を取得している。

/porc/<プロセスID>/<いろいろファイルがある>

あるプロセスの環境変数について確認したいときは /proc/<プロセスID>/environで確認できる。

シグナルについて

killコマンドでは通常SIGTERMというシグナルが送られる。 さらに強いシグナルとしてSIGKILL(無視できない)がありSIGKILL>SIGTERMとなっている。 他にはSIGSTOP,SIGCONT,SIGHUPがあげられる。 監修的にSIGHUPは設定の再読み込みに使われる。

実行優先度について

nice値というパラメータで決まる。 -20(高優先度) ~ 10(低優先度)となっており、nice値が1違うとCPU使用率に10%の差が生まれる。 nice値を変更するには対象のプロセスIDに対して、reniceコマンドを使用して変更を行う。

よりアグレッシブに動作を制御するには

スケジューリングポリシーの変更がある。

リソースに制限をかける

CPU/IO/メモリに制限をかけることができる。 ulimitでプロセスやユーザ単位でリミットをかけることができる。 CGroupsでプロセスのグループを作ることでグループに対して制限をつけることができる。