dポイントプレゼントキャンペーン実施中!

こんにちは。
Solaris10での起動時のコマンドの自動実行について調べています。

Solaris10の場合、SMFというものが導入されているそうですが、従来の方法も使えるとのことなので、まずは従来方式で試しています。

そこで不明点が2つほどあります。
1つは、起動時のランレベルなのですが、調べると、inittabに書いてあるとの情報が多いのですが、実際ところ、inittab内容は以下のようになっていまして、
ap::sysinit:/sbin/autopush -f /etc/iu.ap
sp::sysinit:/sbin/soconfig -f /etc/sock2path
smf::sysinit:/lib/svc/bin/svc.startd >/dev/msglog 2<>/dev/msglog </dev/console
p3:s1234:powerfail:/usr/sbin/shutdown -y -i5 -g0 >/dev/msglog 2<>/dev/msglog
どうにも起動時のランレベルと実行されるスクリプトがわかりません。


もう1つ、起動スクリプトの引数なのですが、例えばK16apacheを見ると、
case "$1" in
start|startssl|sslstart|start-SSL)
:
:
restart)
:
:
stop)
:
:
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
という感じになっているのですが、この$1に入ってくる値の一覧が見つかりません。
Webの情報では、「start」,「stop」,「restart」,「status」の4種類ということになっていますが、このスクリプトを見ると、他にもあるようです。実際、どう対応しておけばいいのでしょうか?

以上です。なにか情報などお持ちの方いらっしゃいましたら、よろしくお願いします。

A 回答 (1件)

> どうにも起動時のランレベルと実行されるスクリプトがわかりません。


起動時のrunlevelですが、svcs -a | grep milestoneを実行すると
multi-user-serverが起動していればrunlevel3、multi-userまでであれば2、single-userまでであれば、Sに相当します。
また互換性を重要視するSunらしく、SMFで管理されているdaemonが起動し終わった後に、rc*.dのスクリプトが読み込まれますので、過去資産の使い回しも可能にはなっています。


> 実際、どう対応しておけばいいのでしょうか
ちょっと真意はご質問からは感じ取れませんでしたが所詮はapachectlを呼び出しているだけですし、rc*.dから起動するのであれば、stopとstartしか呼ばれませんので、デフォルトのままで特に問題はないと思います。

ただし従来の方法であるinit scriptを利用するのは特段理由が無ければ利用しないことを強くお勧めします。
SMFはdaemonが落ちてしまった際に自動起動することや、rc*.dではXXのあとにYYを起動する程度しか依存関係を書けませんでしたが、SMFはひもづくサービスを記述でき、かつひもづくサービスが落ちた・再起動した際に自身もrestartを実行するなどできます。

ですので、今後消えてゆくrc*.dをあえて選択する必要はないと思います。

参考URL:http://docs.sun.com/app/docs/doc/819-0378/hbrunl …
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。
>multi-user-serverが起動していればrunlevel3、multi-userまでであれば2、single-userまでであれば、Sに相当します。
>また互換性を重要視するSunらしく、SMFで管理されているdaemonが起動し終わった後に、rc*.dのスクリプトが読み込まれますので、過去資産の使い回しも可能にはなっています。
はい、runlevelとしては3になるのは確かなようなのですが、その際に実行されるのはrc3.dの中身だけなのか、rc2.dの中身も実行されるのかどうも不明でして。はっきりした資料がみつからず、困っていました。

>ただし従来の方法であるinit scriptを利用するのは特段理由が無ければ利用しないことを強くお勧めします。
はい、それで従来の方法も結局よくわからないし、プロセスが落ちた時に自動で再起動してくれるのは非常に便利ですので、なんとかSMFに対応してみました。こっちもまあ、資料が乏しくて難儀したのではありますが。
実際のところ、一番情報として頼りになったのは
/usr/share/lib/xml/dtd/service_bundle.dtd
でした。
あと、登録しないと読めないですが、こちらも参考になりました。
http://sdc.sun.co.jp/solaris/solaris10/selfheal/ …

お礼日時:2009/07/10 11:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!