起動時に開始される単純なサービスを定義し、Ubuntuサーバー16.10上に置きます。 /etc/init.d/mydaemon
を作成しました
私はどういうわけかupstartとsystemdの間でめちゃくちゃになりました:最初はupstartサービスをセットアップする必要があると思いました。したがって、ファイルをupstart構文に変換した後、update-rc.d mydaemon defaults
を実行しました。
エラーを見つけてupdate-rc.d mydaemon remove
を実行し、systemd構文に変換してsystemctl enable mydaemon
を実行しましたが、エラーが発生しました。
mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.
問題はファイルの場所でした、Ubuntuサーバーでは/etc/systemd/system
、/etc/init.d/
はレガシーファイル用です。
Sysvスクリプトをredhatボックスからubuntuに移植するときにも同じエラーが発生しました。スクリプトにヘッダーを追加する必要がありました
### BEGIN INIT INFO
# Provides: my-service-name
# Required-Start: $all
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: your description here
### END INIT INFO
https://askubuntu.com/questions/909523/default-start-contains-no-runlevels-aborting にあります
@CharlesBからの回答に追加するだけです。この状態になると、ファイルを/etc/init.d/
から/etc/systemd/system/
に移動してコマンドを再実行するだけで、正常に動作しました。
Sudo mv /etc/init.d/mydaemon /etc/systemd/system/
Sudo systemctl enable mydaemon
同じエラーが発生し、次のようにデフォルトの開始情報を入れて修正しました。
vi /etc/init.d/greenbone-security-assistant
から変更する:
# Default-Start:
に:
# Default-Start: 2 3 4 5
:wq
root @ kali:/etc/init.d# systemctl enable greenbone-security-assistant
Greenbone-security-assistant.serviceの状態をSysVサービススクリプトと/ lib/systemd/systemd-sysv-installで同期しています。
実行:/ lib/systemd/systemd-sysv-install enable greenbone-security-assistant