Debian 9 init.d と systemd [重複]

Debian 9 init.d と systemd [重複]

デフォルトでは、systemdはDebian 9のデフォルトです。しかし、/etc/init.dディレクトリにはまだ多くのコンテンツがあります。これは起動するものをそこに置くことができるという意味ですか?どのディレクトリが最初に実行されますか(systemdまたはinit.d)?

ベストアンサー1

systemd起動またはsystemctl daemon-reload実行されると、スクリプトのリストを生成し、システムネイティブユニットがすでに存在する場合を除き、そのユニットを生成するプログラムをsystemd実行します。systemd-sysv-generator/etc/init.d.service.service

ジェネレータはスクリプトのすべてのLSBヘッダブロックを解釈しますinit.d。それらは次のとおりです。

### BEGIN INIT INFO
# Provides:          apache2
# Required-Start:    $local_fs $remote_fs $network $syslog $named
# Required-Stop:     $local_fs $remote_fs $network $syslog $named
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Apache2 web server
# Description:       Start the web server
#  This script will start the apache2 web server.
### END INIT INFO

説明されているすべての依存関係(ここ$local_fs $remote_fs $network $syslog $named)は、対応するシステム依存関係に変換されます。スクリプトとsystemdサービスの間に常に単純な1対1マッピングがないため、ジェネレータは特に一部のLSBinit.d依存関係(たとえば$remote_fs、、、、および)を対応するsystemd単位にマッピングします。$network$named$portmap$time.target

自動生成されたラッパーサービスはそのinit.dスクリプトを実行します。basic.targetすべてのラッパースクリプトは、依存関係が許可する限り、systemd以降に実行するように注文されます。これはLSBヘッダーを非常に重要にします。ジェネレータメカニズムに依存し、依存関係リストが不完全な場合、そのスクリプトが依存する準備systemdが整う前にスクリプトを早期に実行しようとする可能性が高くなります。init.d

一部のパッケージサービスにはスクリプトが1つしかありませんが、init.dシステムサービスファイルは2つ以上あります(NFSサービスなど)。この場合、パッケージはジェネレータに依存しませんが、スクリプトinit.dとサービスファイル(重複しない名前を含む)の両方を提供します。パッケージはへの/lib/systemd/system/<name of init script>.serviceシンボリックリンクも提供します/dev/null。これにより、systemdinitスクリプトによって自動的に生成されたサービスが永久にブロックされたと見なされ、デフォルトのユニットファイルが代わりにサービスプロセスを処理します。

おすすめ記事