sysVサービスのシステムラッパースクリプトを削除し、ユニットファイルを使用する方法は?

sysVサービスのシステムラッパースクリプトを削除し、ユニットファイルを使用する方法は?

systemd以前のsysVサービスのラッパースクリプトを構成解除または削除しようとしています。このラッパーはDebianパッケージで提供されているため、直接削除することはできません。

ラッパーは成果物として表示され、次のようにリストされます。「生成する」:

$ systemctl list-unit-files | grep -i -E 'rng|rand'
rng-tools.service                      generated
systemd-random-seed.service            static
urandom.service                        static

systemdこれを置き換えるために新しいサービスを追加しました。システム単位ファイルの作成と変更:

# touch /etc/systemd/system/rng-tools.service
# chmod 664 /etc/systemd/system/rng-tools.service
# emacs /etc/systemd/system/rng-tools.service
<edit file>

ただし、新しいサービスファイルを有効にしようとすると、古いsysVスクリプトが使用されます。

# systemctl enable rng-tools
Synchronizing state of rng-tools.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools

検索結果は0回で、以前のパッケージは削除される可能性があります。ラッパースクリプトの作成などのヒットが多く発生します。ただし、systemdデータベースから削除する方法に関する情報が見つかりませんでした。

sysVサービスのsystemdラッパースクリプトを構成解除または削除する方法は?


スティーブンが提案した後、これが起こりました。rng-tools.service使用中の新製品:

$ systemctl status rng-tools
● rng-tools.service - Entropy daemon for /dev/random using a hardware RNG
   Loaded: loaded (/etc/systemd/system/rng-tools.service; enabled; vendor preset
   Active: failed (Result: exit-code) since Mon 2018-10-15 07:19:32 EDT; 20min a
 Main PID: 674 (code=exited, status=1/FAILURE)

そして:

# journalctl -b -u rng-tools.service
-- Logs begin at Mon 2018-10-15 07:19:29 EDT, end at Mon 2018-10-15 07:49:13 EDT. --
Oct 15 07:19:31 beaglebone systemd[1]: Started Entropy daemon for /dev/random using a hardware RNG.
Oct 15 07:19:31 beaglebone rngd[674]: can't open /dev/hwrng: No such file or directory
Oct 15 07:19:32 beaglebone systemd[1]: rng-tools.service: Main process exited, code=exited, status=1/FAILURE
Oct 15 07:19:32 beaglebone systemd[1]: rng-tools.service: Unit entered failed state.
Oct 15 07:19:32 beaglebone systemd[1]: rng-tools.service: Failed with result 'exit-code'.

そして:

# dd if=/dev/hwrng count=16 bs=1
▒▒▒▒ȿ▒3▒▒ ▒▒#16+0 records in
16+0 records out
16 bytes (16 B) copied, 0.00942799 s, 1.7 kB/s

完全性のために、これは新しいものですrng-tools.service

# cat /etc/systemd/system/rng-tools.service
# ...

[Unit]
Description=Entropy daemon for /dev/random using a hardware RNG
After=syslog.target
Requires=syslog.target

[Service]
Type=simple
ExecStart=/usr/sbin/rngd -r /dev/hwrng -f

[Install]
WantedBy=basic.target

ベストアンサー1

Synchronizing state of rng-tools.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable rng-tools

これは、systemdに-style initスクリプトがあることを「認識」sysvinitし、サービスの状態を考慮するときに考慮する必要があることを意味しますrng-tools。だからと言うわけではない使用サービス管理用の初期化スクリプトです。

initスクリプトとユニットファイルの両方が存在する場合、systemdは後者を使用します(少なくともサービスが実行されていないとき)。

を実行すると、どのファイルがサービスの開始に使用されているかを確認できますsystemctl status。 「Loaded」行には、どのスクリプトが使用されたかが表示されます。たとえば、以下はsystemdユニットとinitスクリプトの両方を含むサービスです。

● infnoise.service - Wayward Geek InfNoise TRNG driver
   Loaded: loaded (/lib/systemd/system/infnoise.service; enabled; vendor preset: enabled)

これはinitスクリプトのみを持つサービスです。

● sensord.service - LSB: lm-sensors daemon
   Loaded: loaded (/etc/init.d/sensord; generated; vendor preset: enabled)

あなたのサービスをチェックしてくださいしなければならないShow systemdが新しいデバイスを使用しています。

他のすべての方法が失敗した場合できるdelete /etc/init.d/rng-tools: 設定ファイルで追跡する必要があり、dpkg削除されたことを通知し、パッケージのアップグレード時に復元しません。/etcパッケージはファイルをインストールできますが、パッケージシステムではなくシステム管理者に属します。

おすすめ記事