起動時にいくつかのスクリプトを実行して、サーバーを実行する方法を設定していました。 Ubuntu 18.04に移行した後、いくつかのスクリプトで問題が発生しましたが、これが再起動後にシェルスクリプトを自動的に実行するための望ましい方法であるかどうか疑問に思っていますか?
Ubuntu 16.04に続いて、従来のinit起動スクリプトはsystemdサービスとその設定に置き換えられました。ほとんどのスクリプトまたはスクリプトの指示は、いわゆるsystemdユニットファイルに書き直されました。したがって、カスタム起動スクリプト用のsystemdサービスをセットアップすることをお勧めします。
コンテンツを含む/etc/systemd/system/foo.service
を作成します。
[単位]
Description =セットアップfoo
After = network.target[サービス]
Type = oneshot
ExecStart =/opt/foo/setup-foo.sh
RemainAfterExit = true
ExecStop =/opt/foo/teardown-foo.sh
StandardOutput = journal[インストール]
WantedBy = multi-user.target
それに応じてパラメータに置き換えます。このサービス定義は、スタートアップごとに/opt/foo/setup-foo.sh
を実行します。
サービスを読み込んで有効にすることを忘れないでください。
Sudo systemctl daemon-reload
sudo systemctl enable foo.service
詳細は この例 をご覧ください。