web-dev-qa-db-ja.com

systemdおよび存在しない* .serviceファイル:それらは汎用ですか?

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ファイルがありません。例はmysqlApache2です。 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が有効になっていることをどのように見つけますか?

1
PersianGulf

Update-rc.dを使用してApache2.serviceの状態をsysvinitと同期しています...

そして、そこにあなたの答えがあります。 systemdには、これらのデーモン用のサービスユニットがありません。ただし、/etc/init.d/にはSystem5 rcスクリプトがあります。そのため、LSBヘッダーを読み取るupdate-rc.dを介して間接的にこれらのスクリプトを処理し、デーモンを有効/無効にします。

1
JdeBP