検索



Please click now!!

起動時、一番最後に実行する rc スクリプト。

さてと。久しぶりに 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 しても自動的にまた起動してしまうでしょ。あれ、好きくないのよ。今はそんなことなくなったのかな?最近のは試してないけど。

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

日時: 2009年04月20日(月) 16:51
このエントリをつぶやく

トラックバック

このエントリーのトラックバックURL:
http://www.running-dog.net/mt333/mt-tb.cgi/131

コメント: 起動時、一番最後に実行する rc スクリプト。

BEFORE: bgfsck と書いたら、それは bgfsck の前に実行してほしい、となってしまうのでは…。

試しに
# PROVIDE: asdf
# REQUIRE: bgfsck
と書いたファイルを /etc/rc.d に置いたら
# rcorder /etc/rc.d/*
(略)
/etc/rc.d/bluetooth
/etc/rc.d/bgfsck
/etc/rc.d/asdf
となりましたよ。

でも、bgfsck って、中で60秒sleepしてから動くので、それよりどうしても後にしたいってのは、あんまりないと思うんですけど…。

投稿者 sarumaru | 2009年04月20日(月) 20:25

sarumaru さん。いつも読んで頂きありがとうございます。

それにしても・・。本当ですかーー?

xdm.sh に sarumaru さんのコメントの二行を書いて rcorder なコマンド叩いたらこんな感じになりました。

(以上略)
/etc/rc.d/LOGIN
/etc/rc.d/cron
/etc/rc.d/bgfsck
/usr/local/etc/rc.d/xdm.sh
/usr/local/etc/rc.d/vpnc
(以下略)

一番下にあった /etc/rc.d/bgfsck が /etc/rc.d/LOGIN の下の下辺りにまで上がって来ているんですけど・・。

これが納得行かないんですよー。

rc スクリプトを一個書いただけで default の起動順序までめちゃくちゃになってしまう・・。もうイヤになってしまうのですが、次回の CBUG のミーティングで「発表」では無く、「ディスカッション」って感じで話ても良いですねぇ。どうしてこうなるの? みたいな感じで;-)。

投稿者 たかじろう。 | 2009年04月20日(月) 22:33

コメントを投稿

 
Copyright (c) 1997-2010 takachan@running-dog.net All Rights Reserved.