systemd
ユニットは次のように/lib/systemd/system
に格納されます。
rsync.service
avahi-daemon.socket
bluetooth.service
cups.service
次のコマンドを使用する場合:
systemctl enable name
Nameを、有効にするサービスユニットの名前に置き換えます(たとえば、Apache2
)。このコマンドは、選択したサービスユニットの[Install]
セクションを読み取り、/lib/systemd/system/name.service
ディレクトリとそのサブディレクトリにある/etc/systemd/system/
ファイルへの適切なシンボリックリンクを作成します。
しかし一部のパッケージでは、*.service
に/lib/systemd/system
ファイルがありません。例はmysql
とApache2
です。 systemctl
を使用してそれらを有効にすると、正常に機能します。
# systemctl enable Apache2
Synchronizing state for Apache2.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d Apache2 defaults
Executing /usr/sbin/update-rc.d Apache2 enable
または
# systemctl enable mysql
Synchronizing state for mysql.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d mysql defaults
Executing /usr/sbin/update-rc.d mysql enable
これらのサービスに関連するファイルを探しても結果が得られません。
# find /etc/systemd/system/ -iname "*Apache2*"
# find /etc/systemd/system/ -iname "*mysql*"
SystemdはApache2またはmysqlが有効になっていることをどのように見つけますか?
Update-rc.dを使用してApache2.serviceの状態をsysvinitと同期しています...
そして、そこにあなたの答えがあります。 systemdには、これらのデーモン用のサービスユニットがありません。ただし、/etc/init.d/
にはSystem5 rc
スクリプトがあります。そのため、LSBヘッダーを読み取るupdate-rc.d
を介して間接的にこれらのスクリプトを処理し、デーモンを有効/無効にします。