4月 202009
 

さてと。久しぶりに FreeBSD ネタ;-)。

rcNG。僕は好きく無いんだけど、/usr/local/etc/rc.d/ 配下に自分で書いたスクリプトを置いて、一番最後に実行させるべく PROVIDE:・REQUIRE:・KEYWORD: などを書いても絶対に一番最後にはならない。BEFORE: bgfsck とか書いても、bgfsck が 上のほうに来てしまうし・・。

# rcorder -s nostart /etc/rc.d/* /usr/local/etc/rc.d/*

 
と、言うコマンドを叩くと実行される順番が表示されるけど、自分で実行したい順番にならない・・。
もうどうにもならないので考えた技。上記コマンドを打ったとき、一番最後に実行されるのが、/etc/rc.d/bgfsck なのでこの中からスクリプトを呼んでしまえっ。技を考え出しました;-)。修正分をパッチにするとこんな感じ。

--- /home/takachan/bgfsck       2009-04-20 16:58:23.000000000 +0900
+++ /etc/rc.d/bgfsck    2009-02-08 10:10:39.000000000 +0900
@@ -16,6 +16,11 @@
bgfsck_start () { + +# It operates at the very end. rc is started. + echo 'Starting very end RC.' + /usr/local/site/bin/rc.lastexec + if [ -z "${rc_force}" ]; then background_fsck_delay=${background_fsck_delay:=0} else

 
/etc/rc.d/bgfsck の 中から /usr/local/site/bin/rc.lastexec を呼んでいる。でもって呼び出されたこのスクリプトでは自分が一番最後に実行したいものをツラツラと書いて行けばおしまい。って状態にしています;-)。

同じようなことは他にもあるけどねぇ。例えば /etc/rc.d/LOGIN の中に上記のパッチみたく書けば、その直後に実行されるとか(本当か?試して無いけど;-)、ネットワーク系のデーモンはもっと早い時にに起動したい場合は、じゃぁ、必要なスクリプトから呼んじゃエー。みたいな。

これは FreeBSD の流儀的には美しく無いのだろうけど、思った所でバシっと動作してくれないのが困ってしまうのよ・・。rcNG は・・。はぁ。

まぁ、今の所は一番最後に起動したいのが一番多いのでそれはそれでよしとしています。xdm(僕の場合は kdm だけど)なんざ、一番最後に起動して欲しいのよねぇ。/etc/ttys 経由では無く、rc スクリプト経由で。

/etc/ttys から xdm を呼んじゃうと kill しても自動的にまた起動してしまうでしょ。あれ、好きくないのよ。今はそんなことなくなったのかな?最近のは試してないけど。

それにしてもこの技、よい子はマネしないでねぇ;-)。