「プロセスとシグナル」というタイトルで社内勉強会を開催しました。UNIX系OSのプロセスとシグナルに関する周辺知識の確認です。
ムービー
発表資料
内容の補足など
プレゼン途中でdefunctの英語としての意味って何だっけ?とか言ってアワアワしていますがご愛嬌ということで。
rootなら他人の環境変数も開いてるファイルもわかる、ってことに驚いてくれた人も居たようです。何にせよlsofコマンドって便利ですよね。fuserコマンドも紹介しようかと思いましたが、これは宿題ということにしましょう。
そういえばpidofコマンドの紹介を忘れてました。これは使い方も何も無い感じのコマンドですが、シェルスクリプトでプロセス周りの作業をするときは必需品だと思います。
また、PIDは16bitとプレゼン資料に書きましたが、間違いでした。訂正させてください。手元のFreeBSDではPIDは90000オーバーまで行くようですし、Linuxでは/proc/sys/kernel/threads-maxを編集すればプロセス数の上限が変更できるような話も見つかりました(でも実験すると32766より大きいPIDにならない気が…多分何か間違ってるんだと思いますが…)。デフォルトの上限が小さめなのは、PIDをコマンドラインから打つのにあまり大きい数字になると不便だから、ということなのかもしれません。
端末からCtrl+zをタイプしたときにもプロセスにシグナルが送られます。この場合のデフォルトの挙動はプロセスの停止です。fgなどとすると実行可能状態に戻ってきます。
参考資料
- タスク管理(プロセス管理)前半 神奈川大学のH16年度講義「システムソフトウェア」の講義資料のようです。プロセスの状態遷移の図を参考にさせて頂きました。

コメント / トラックバックはありません
コメントする