Solaris10での自動起動設定

このQ&Aのポイント
  • Solaris10では、起動時のコマンドの自動実行には従来の方法とSMFが利用されています。
  • 起動時のランレベルや実行されるスクリプトはinittabファイルに記述されますが、具体的な内容は不明です。
  • 起動スクリプトの引数は$1に入ってくる値で、Web情報では「start」「stop」「restart」「status」の4種類とされていますが、他にも存在する可能性があります。
回答を見る
  • ベストアンサー

Solaris10での自動起動設定

こんにちは。 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種類ということになっていますが、このスクリプトを見ると、他にもあるようです。実際、どう対応しておけばいいのでしょうか? 以上です。なにか情報などお持ちの方いらっしゃいましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • d-kawai
  • ベストアンサー率78% (11/14)
回答No.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/hbrunlevels-25516?l=ja&q=smf&a=view
titokani
質問者

お礼

お返事ありがとうございます。 >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/private/sdev_intro.html

関連するQ&A

  • solaris10にて、SMFからのapache+ssl起動

    solaris10にて、apache2+sslの環境を構築しているのですが、SMF経由でapacheを起動させると、sslが有効になりません。 SMFにて使用する、起動用のスクリプト「/lib/svc/method/http-apache2」内のsvcpropというコマンドで、チェックしているところまでは分かったのですが、ここからが分かりません。 どなたか、ご教授願います。 ★SMFからの起動(apache2のみ起動される) # /usr/sbin/svcadm disable svc:/network/http:apache2 # /usr/sbin/svcadm enable svc:/network/http:apache2 # svcs -a |grep apache2 online 11:30:43 svc:/network/http:apache2 # ps -ef|grep http |grep -v grep root 692 1 19 11:30:43 ? 0:06 /usr/local/apache2/bin/httpd -k start webservd 698 692 0 11:30:51 ? 0:00 /usr/local/apache2/bin/httpd -k start ★apache2+SSL手動起動 ・apache無効化 # /usr/sbin/svcadm disable svc:/network/http:apache2 # /usr/local/apache2/bin/apachectl startssl # ps -ef|grep http webservd 675 670 0 11:25:45 ? 0:00 /usr/local/apache2/bin/httpd -k start -DSSL root 670 1 9 11:25:42 ? 0:03 /usr/local/apache2/bin/httpd -k start -DSSL

  • /etc/inittabのランレベル部分の記述について

    runlevelとは無関係にスクリプトを実行させたい場合は、::の部分に何もかかない? /etc/inittabに以下の記述があります。 本来ランレベルを書くべきところに何もかかれていません。 こういった場合、どういう動きをするのでしょうか? (ランレベルに関係なく起動時に実行される?) (manには該当の記述がみあたりませんでした。) rc::bootwait:/etc/rc si::sysinit:/etc/rc.d/bcheckrc

  • ランレベルと起動スクリプト

    ランレベルと起動スクリプトとの関係について教えてください。 rc*.dというファイルについて色々調べているのですが、 下記の説明を見つけまして /etc/rc1.d/ ランレベル1の際の起動スクリプト /etc/rc2.d/, ランレベル2の際の起動 スクリプト /etc/rc3.d/, ランレベル3の際の起動スクリプト /etc/rc4.d/, ランレベル4の際の起動スクリプト /etc/rc5.d/, ランレベル5の際の起動スクリプト デフォルトでsolaris起動時にランレベル3になるような場合、 rc3.dの中のスクリプトを読みに行くのはわかるのですが、 他のrc2.dやrc1.dは読みに行かないのでしょうか?

  • 初代玄箱の/usr/sbin/ap_servd?

    今更に初代玄箱なのですが、起動時スクリプトに/etc/init.d/ap_servd(恐らくアップルのMACに対する処理)とあるのですが、その中で呼ばれている/usr/sbin/ap_servdというデーモン?がデフォルトでは存在しません。デーモンらしい/usr/sbin/ap_servd自身が玄箱動作中に作られるということがあるのでしょうか? MACについても全く知識が無いのでその辺りからの推察もできません。 ap_servdについてはネット検索でも全くヒットせず、玄箱本でも触れられてなかったので、ちょっと気になって質問しました。 ######以下、/etc/init.d/ap_servdの内容です。##### #!/bin/sh # chkconfig: 70 70 # processname: ap_servd # config: /etc/ap_servd.conf . /etc/timezone if ! [ -x /usr/sbin/ap_servd ]; then ←#####ここでap_servdの有無をチェック exit 0 fi # Get configuration if [ -f /etc/ap_servd.conf ]; then . /etc/ap_servd.conf fi case "$1" in start) echo -n "Starting AP serv daemon:" N=0 eval DEVICE='$'BINDDEVICE${N} while [ "$DEVICE" != "" ] ; do echo "AP serv starting on $DEVICE" /usr/sbin/ap_servd -i $DEVICE ←#####ここで呼ばれてる。 N=$(($N+1)) eval DEVICE='$'BINDDEVICE${N} done ;; stop) echo -n "Stop AP serv daemon:" /sbin/killall "ap_servd" > /dev/null 2>&1 ;; restart|reload) $0 stop $0 start ;; *) ehco "Usage: apservd {start|stop|restart|reload}" exit 1 esac exit 0

  • Linuxでの起動スクリプトの設定方法について

    Ubuntu10.04で、/etc/init.d/ の下に自作の起動スクリプトファイルを置いて、OS起動時にアプリが起動するようにしたいです。 Linuxについてはほぼ素人なので、ネット等で適当にスクリプトの書き方や設定方法を調べて、以下のような手順で実施してみましたが、うまく起動しませんでした。 以下に私が実施した手順を記載しますので、原因がわかる方、教えていただけませんでしょうか? (1)以下のスクリプトを書いたファイル(例えば"start_eclipse")を /etc/init.d/ の下に配置する。 #!/bin/bash start() { echo -n "Starting eclipse: " /opt/eclipse/eclipse return 0 } stop() { killproc eclipse return 0 } case "$1" in start) start ;; stop) stop ;; esac (2)Terminalで以下のコマンドを実行。(ランレベルや優先順位はデフォルト値に任せています) $ sudo su # chmod 755 /etc/init.d/start_eclipse # update-rc.d start_eclipse defaults (3)Ubuntuを再起動して確認。⇒アプリ(この場合はeclipse)は起動しませんでした。 私としてはスクリプトの書き方が間違っているのではないかと予想しているのですが、スクリプトについてネットで調べると、今回のような単純なアプリ起動・終了方法についての情報があまり載っていない(と思う)ため、自力では間違い箇所が発見できませんでした。 ついでと言ってはなんですが、起動スクリプトの書き方や設定方法について参考になるサイトがありましたら、そちらも教えていただけましたら幸いです。 以上、宜しくお願い致します。

  • bindの再起動

    初歩的な質問ですがよろしくお願いします。 DNSの設定変更(レコードの追加など)する際、 変更後にDNSの再起動をする必要があると思いますが、 どのように行うのがよいのでしょうか? OS及びバージョンは以下の通りです。 OS:solaris8、bind:9.2.1 # uname -a SunOS unicorn 5.8 # /usr/local/sbin/named -v BIND 9.2.1 # ps -ef | grep named root 180 1 1 Mar 10 ? 118:22 /usr/local/sbin/named ・kill -HUP 180 ・S72inetsvc stop / start ・/usr/local/sbin/named stop / start どれも同じことなのでしょうか? 一番安全かつ影響が少ない方法があれば、 ご教示願います。 よろしくお願いします

  • solaris10のipfilterについて

    solaris10でipfilterを設定しようと思うのですが、ネットを調べると Solaris10では「IP Filter」がインストールされるが、デフォルトでは無効である為有効にする。 まず、/etc/ipf/pfil.apファイルから設定したいインタフェースのコメントを解除する。 とあるのですが、そもそも/etc/ipf/配下にはipf.confしかありません。 自分でe1000g0 -1 0 pfilで作成し svcadm restart pfil実行後、再起動したのですが Solaris# ifconfig e1000g0 modlistで表示されません。 なぜでしょうか? 教えて頂ければと思います。

  • Solaris10 ブートしない

    Solaris10(SPARC版)でmetadbにてミラー(Raid1)にて運用していました。 c0t0d0 ----------- c0t2d0 s0 ----- d10(/) ----- s0 s1 ----- d20(swap) ----- s1 s3 ----- unassigned ---- s3 s4 ----- unassigned ---- s4 s5 ----- unassigned ---- s5 s6 ----- unassigned ---- s6 s7 ----- metadb ----- s7 先日、"c0t2d0" のHDDが故障しました。 そのため、ブート時に以下のメッセージを出力し、それ以上進まない状況です。 Insufficient metadevice database replicas located. Use metadb to delete databases which are broken. Ignore any Read-only file system error messages. Reboot the system when finished to reload the meta device database. After reboot,repair any broken database replicas which were deleted. svc.startd[7]:svc:/system/metainit:default:Method"/lib/svc/method/svc-metainit" failed with exit status 96. svc.startd[7]:system/metainit:default misconfigured:transitioned to maintenance (see 'svcs -xv' for details) WARNING:Error writing ufs log state WARNING:ufs log for / changed state to Error WARNING:Please umount(1M) / and run fsck(1M) WARNING:init(1M)exited on fatal signal 10:restarting automatically. WARNING:exec(/sbin/init) failed with errno5. WARNING:failed to restart init(1M)(err=5):system reboot required Stop+Aよりokプロンプトからboot -sを実施しても、上記を出力し状況かわらず。 boot cdrom -sにて起動後、以下は実施するも特に問題なし。 fsck /dev/dsk/c0t0d0c0 fsck /dev/dsk/c0t0d0c1 fsck /dev/dsk/c0t0d0c7 ←metadbの領域は未実施 リカバリ方法をご存知の方がいましたら、教えていただけますでしょうか

  • Solaris10でsendmail8.13.4を起動できません。

    先日Solari10でsendmail8.12.10がインストールできないと質問させていただいた者です。 sendmail8.13.4でインストールができたのですが、起動することができません。 メールサーバですので、最終的にはデーモンモードで起動したいと思っております。 Solaris10からSMFでサービスの「有効」、「無効」を設定できるようになったと聞いて、みようみまねで不必要なポートを閉じたのが原因かと思います。 思いつく情報を下記に示しますので、アドバイスいただけますでしょうか。(情報が足りないようでしたら、補足いたします) # svcs -a | grep sendmail offline 6月_24 svc:/network/smtp:sendmail # netstat -an | grep LISTEN *.22 *.* 0 0 49152 0 LISTEN *.23 *.* 0 0 49152 0 LISTEN *.21 *.* 0 0 49152 0 LISTEN *.22 *.* 0 0 49152 0 LISTEN *.23 *.* 0 0 49152 0 LISTEN *.21 *.* 0 0 49152 0 LISTEN # tail -f syslog (/usr/lib/sendmail -t時) Jun 27 12:02:53 HOSTNAME sendmail[6988]: [ID 702911 mail.crit] My unqualified host name (HOSTNAME) unknown; sleeping for retry ※HOSTNAMEは実際は違うホスト名です。

  • Solaris10でPOP3サーバ設定

    Solaris10でPOP3のメールサーバを構築したいのですが、正しく動作しません。 1.パッケージの追加 pkgadd -d . ./SFWimap 2.パッケージ追加後の確認 pkginfo | grep SFWimap system SFWimap Imap - mail server daemon and utilities 3. POP3のパッケージが追加されたことを確認 pkgchk -v SFWimap : : /opt/sfw/sbin/imapd /opt/sfw/sbin/ipop2d /opt/sfw/sbin/ipop3d 4. inetd.confへ追加 vi /etc/inet/inetd.conf pop3 stream tcp nowait root /opt/sfw/sbin/ipop3d ipop3d imap stream tcp nowait root /opt/sfw/sbin/imapd imapd 5.inetconv 6. svcs | grep pop online svc:/network/pop3/tcp:default 上記までエラーなく設定できたので、いったんマシンをリブートして 下記コマンドで動作確認しました。 telnet localhost 110 Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Connection to localhost closed by foreign host. ところが上記のように、telnet が終了してしまいます。 /var/adm/messages を見ると、 Jul 1 16:48:29 host inetd[852]: [ID 702911 daemon.error] Failed to exec inetd_start method of instance svc:/network/pop3/tcp:default: 引数が正しくありません。 と出ています。 /etc/inetd.conf の追記方法に問題があるのでしょうか。