Novell(クラウドコンピューティングのセキュリティ・仮想化ソリューションを実現)

 

Linuxサービスの起動と停止の順序の操作

This document (7002295) is provided subject to the disclaimer at the end of this document.

環境

Novell SUSE Linux
Novell SUSE Linux Enterprise Server 9
Novell SUSE Linux Enterprise Server 10
Novell SUSE Linux Enterprise Desktop 10


問題の状況

  • 場合によっては、サービスの起動と停止の順序を操作する必要があります。
  • カスタムサービスへの起動と停止の順序の追加方法

解決策

LSB(Linux Standards Base)では、サービスの起動と停止の順序は「insserv」パッケージを使用して制御されます。Netware、DOSおよびその他のオペレーティングシステムと同様、SUSEは依存関係に基づいて起動と停止の順序を計算します。Linuxの特異性として、高速な起動時間の利用がありますが、仕組みは複雑になっています。 

起動と停止のスクリプトは/etc/init.dにあります。スクリプトのヘッダは、次のようになります。


### BEGIN INIT INFO
# Provides:        myService
# Required-Start: $network
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:  2 3 5
# Default-Stop:
# Description:    Example Service
### END INIT INFO

スクリプトに上記の情報がない場合(カスタムスクリプトなど)は、追加できます。すべてのLSB準拠のスクリプトには、同様のヘッダがあります。このヘッダがないファイルは、.depend.*およびboot.local、およびafter.localのファイルのみです。

insserveパッケージは上記のコメントを使用して、サービスが必要とするものを定義します。"Provides:"行は、"Required-Start"、"Should-Start"、"Required-Stop"、"Should-Stop"フィールドでその他のスクリプトが参照できる擬似名です。

特定のサービスを操作する方法があります。


  • サービス名の前の"$"は、擬似名からなるサービスのグループを指します。これは/etc/insserv.confで定義されています。
  • "$ALL"はサービスを最後に実行させる予約名です。
  • "+"は、サービスがオプションであるか、サービスの失敗によって参照先のサービスの起動または停止が妨げられないことを意味します。

警告

.depend.*ファイルを直接変更しないでください(/etc/init.d内)。直接変更すると、システムが起動できなくなります。

/etc/init.d/rc?.dで、ディレクトリには起動と停止の順序があります。ファイル名の最初の文字と後続の2つの数字は、起動と停止の順序を定義します。たとえば、S05myServiceとS05myService2は同時に起動されます。S05myServiceとS06myService2はmyService2より前に起動されます。これらのファイルの番号を直接操作することがありますが、推奨されません。"chkconfig"または"insserv"を実行すると常にこれらのファイルの名前が変更されます。このほうがLSB方法より優れた方法です。



/etc/init.dで定義されたサービスヘッダを操作する例を示します。

次の例は、サービス"myService"をネットワークがロードされた後に起動し、サービス"myOtherService"を自動的に起動します。


### BEGIN INIT INFO
# Provides:        myService
# Required-Start: $network
# Should-Start: myOtherService
# Required-Stop:
# Should-Stop:
# Default-Start:  2 3 5
# Default-Stop:
# Description:    Example Service
### END INIT INFO

次の例は、サービス"myService"を最後に起動します。


### BEGIN INIT INFO
# Provides:        myService
# Required-Start: $ALL
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:  2 3 5
# Default-Stop:
# Description:    Example Service
### END INIT INFO

次の例では、サービス"myService"をネットワークとオプションのコンポーネント"myOtherService"の後に起動します。


### BEGIN INIT INFO
# Provides:        myService
# Required-Start: $network +myOtherService
# Should-Start:
# Required-Stop:
# Should-Stop:
# Default-Start:  2 3 5
# Default-Stop:
# Description:    Example Service
### END INIT INFO

擬似サービスの定義

/etc/insserv.confで、サービススクリプトで"$"で参照される疑似サービスが定義されます。サービススクリプトのコレクションを追加して1度だけ参照する必要がある場合は、insserv.confファイルに追加できます。特定の環境へのカスタマイズに便利です。

たとえば、ファイアウォールルールスクリプトをネットワークが起動するたびに実行する場合は、/etc/insserv.confを変更して$networkが"network"と"myFirewall"を参照するようにします。/etc/init.dに有効なスクリプトが0755の権限で存在すると仮定すると、これを次のように変更できます。

$network   network
変更後は以下のようになります。
$network   network   myFirewall


ファイルには、<interactive>という特殊なキーワードが1つあります。<interactive>があるサービス名には、ユーザ操作が必要です。

サービスを連続して実行する

起動プロセスを高速化するため、サービスの起動と停止を並列化できます。多くの場合、この動作を変更する理由はありません。ただし、これに問題がある場合、/etc/sysconfig/bootを変更します。パラメータRUN_PARALLEL="YES"を見つけて"NO"に変更します。

変更を反映する


スクリプトを変更した後、2つのコマンドを実行する必要があります。"myService"を変更したファイル名に置換します。


  1. insserv myService
  2. chkconfig myService on

Novellおよびサードパーティ提供のサービスの変更

Novellまたはサードパーティから提供されたスクリプトを変更すると、変更内容はサービスパックアップグレードまたはサービスの新バージョンで上書きされる可能性が最も高くなります。一般に、Novellでは/etc/init.dスクリプトの新バージョンをリリースしていませんが、場合によってはリリースします。

カスタムスクリプトの追加

カスタムスクリプトの場合、ファイル許可は0755 (-rwxr-xr-x)である必要があります。


追加情報


Disclaimer

この情報は、米国Novell, Inc.およびノベル株式会社の内外から発生したものです。本文書の内容または本文書を使用した結果について、いかなる保証、表明または約束も行っていません。また、本文書の商品性、および特定目的への適合性について、いかなる黙示の保証も否認し、排除します。

本文書に記載されている会社名、製品名はそれぞれ各社の商品、商標または登録商標です。

  • ドキュメントID: 7002295
  • 作成年月日: 06-JAN-2009
  • 修正年月日:
  • ドキュメントリビジョン:
  • 分類:
  • 対象NOVELL製品およびバージョン: SUSE Linux Enterprise Desktop, SUSE Linux Enterprise Real Time, SUSE Linux Enterprise Server
  • カテゴリ: