SysV サービスは通常、/etc/init.d/ の下にある実行可能なスクリプトで表されます。スクリプトは、その実装とディストリビューションの慣例に従い、start、stop、restart、status などの操作を受け付けます。service コマンドは、名前を指定したスクリプトをより制御された環境で実行するラッパーです。
Init · レッスン 2
System V サービス
稼働中のシステムが提供するラッパーを通じ、従来の SysV サービススクリプトを確認、操作する方法を学びます。
サービスと操作を調べる
まずスクリプト名を一覧表示します。
$ ls -1 /etc/init.d/
実装によっては、次のコマンドも利用できます。
$ service --status-all
角括弧の印と終了ステータスの意味はラッパー固有で、スクリプトが状態不明と報告する場合もあります。個々のサービスについては、すべての操作が存在すると思い込まず、スクリプトの使用方法出力または文書を確認してください。
service コマンドは通常何をラップしますか?
開始と停止
実際に SysV が管理するホストでは、次の形式が一般的です。
$ sudo service SERVICE_NAME start
$ sudo service SERVICE_NAME stop
サービス、その依存先、現在の状態、運用への影響を特定してから、プレースホルダーを置き換えてください。リモートセッションからネットワーク、リモートアクセス、ストレージ、認証を停止すると、接続できなくなったり作業中のデータを壊したりするおそれがあります。
/etc/init.d/SERVICE_NAME ACTION という直接実行形式も存在します。ただし、稼働中のマネージャーが互換機能を提供するホストでは、状態と依存関係を追跡できるよう、マネージャー向けのコマンドを使ってください。
SysV サービス peanut の停止を要求するコマンドはどれですか?
再読み込み、再起動、状態確認
restart は通常、サービスを停止してから起動するため、中断が発生します。reload は完全に再起動せず設定を読み直すよう要求できますが、スクリプトとデーモンが対応している場合に限ります。一部のスクリプトは、ディストリビューション固有の代替動作を持つ force-reload も提供します。
再読み込みや再起動の前には設定を検証し、リモートアクセスを変更する場合は2つ目の管理用接続を確保してください。操作後は「実行中」という状態だけでなく、実際のエンドポイントとログでもサービスを確認します。
$ sudo service SERVICE_NAME status
$ sudo service SERVICE_NAME reload
reload が restart と同じだと思い込んではいけないのはなぜですか?
実行時の制御と起動時の有効化
今サービスを開始しても、将来のランレベルで有効になるとは限りません。起動時の有効化はランレベルのリンクで表され、update-rc.d、chkconfig、サービスマネージャーの互換ジェネレーターなど、ディストリビューション固有のツールで管理されます。
ディストリビューションの依存関係メタデータと管理ツールを理解するまでは、S と K のリンクを手動で作らないでください。手動のリンクは上書きされたり、順序を誤ったりすることがあります。
service SERVICE start を実行すると、将来の起動時にも必ずそのサービスが有効になりますか?
レッスン完了
System V サービス を完了しました
実行時の制御と起動方針を混同せずに、従来のサービスを操作できるようになりました。
実際のスクリプトと対応する操作を調べる。
ラッパー構文では、操作より前にサービス名を置く。
再読み込みや再起動の動作を事前に検証し、操作後も確認する。
将来のランレベルでの有効化は、ディストリビューションのツールで管理する。