プロセスとシグナル by はなわ 今日のテーマ • プロセスについて周辺知識の確認 • シグナルについて周辺知識の確認 • ps, top, lsofの紹介 • プロセス • シグナル • ps, top, lsof • まとめ プロセス • プロセス=プログラムを実行する実体 • 1プログラム 1個以上のプロセス プロセス状態 • 実行状態:CPUに割当たっている • 実行可能状態:CPUの空き待ち • 待ち状態:外部リソースの入出力待ち プロセスの状態遷移 実行状態 いったんお休み CPUが空いた! 実行可能 状態 ディスクI/O発生 待ち状態 ディスクI/O完了 load ave.の意味 • ロードアベレージ • 実行可能状態のプロセス数の平均 • load ave大=CPUが空き次第仕事が できるはずのプロセスが多い • 「重さ」とは一致しないことも プロセスID(PID) • プロセスにはプロセスIDが割り振られる • 一意な数字 • おそらく16bit プロセスID(PID) • プロセスにはプロセスIDが割り振られる • 一意な数字 • おそらく16bit 親プロセス • プロセスには親がいる • 例:シェルからコマンド起動 →コマンドの親プロセスはシェル 親プロセス • プロセスには親がいる • 例:シェルからコマンド起動 →コマンドの親プロセスはシェル 親プロセス • プロセスには親がいる • 例:シェルからコマンド起動 →コマンドの親プロセスはシェル ゾンビプロセス • 親が看取ってくれないと子は死ねない • wait(2)システムコール • これ以上死ねないのでkillはムダ • 原因は親プロセスのバグ OR 過負荷 ゾンビプロセス • killしてもゾンビプロセスは死なない! ゾンビプロセス • killしてもゾンビプロセスは死なない! ゾンビプロセス • killしてもゾンビプロセスは死なない! • プロセス • シグナル • ps, top, lsof • まとめ シグナル • プロセス間通信の一種 • 非同期イベント • プロセスの終了/停止/状態通知をする シグナルの種類 • INT • TERM • HUP • KILL →どれもデフォルトの挙動はプロセス終了 INTシグナル • 端末からCtrl+cをタイプしたときに送られる • 普通のプログラムはこれで死ぬはず TERMシグナル • killコマンドがデフォルトで送るシグナル • まあ、これも普通は死ぬはず HUPシグナル • 端末を失ったときに送られるシグナル • ログアウトしたとか、回線切れたとか • これも普通は死にます • TERMより強力とされています KILLシグナル • プロセスを殺すための最強のシグナル • どうにも死なないプロセスに送る • ゾンビプロセスや入力待ち状態だと殺せない シグナルハンドリング • シグナルを受け取った際、独自の処理が可能 • Ctrl+c→ファイルに書き出す、など • KILLシグナルはハンドリングできない • TERM, HUP, KILLの順序は意味がある • プロセス • シグナル • ps, top, lsof • まとめ psコマンド • プロセスの状態を見る • ps auxwww(BSD風) • ps -few(SYSV風) • OSによって少し挙動が違うので注意 • TIPS: ps eで環境変数が見える topコマンド • プロセスの状態を見続ける • これも何種類か実装があるようです。注意。 lsofコマンド • lsof [-p [PID]] • プロセスが開いているファイルの一覧 • トラブルシューティングに役立つ • プロセス • シグナル • ps, top, lsof • まとめ まとめ • ロードアベレージの意味 • ゾンビプロセスはkillできない • いきなりKILLシグナルを送るのはNG ご清聴 ありがとう ございました
© Copyright 2024 Paperzz