web-dev-qa-db-ja.com

/etc/rc.localは、Ubuntu 18.04 LTSで起動時にスクリプトを実行するための推奨される方法です

起動時にいくつかのスクリプトを実行して、サーバーを実行する方法を設定していました。 Ubuntu 18.04に移行した後、いくつかのスクリプトで問題が発生しましたが、これが再起動後にシェルスクリプトを自動的に実行するための望ましい方法であるかどうか疑問に思っていますか?

4
Mike Skott

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

詳細は この例 をご覧ください。

1
Jonas