Ubuntuで自動起動プログラムを設定する方法
Ubuntuでは、システムの起動時に特定のシェルスクリプトを自動実行する設定が可能です。以下にその手順を説明します。
シェルの作成と権限の付与
まず、実行したい内容をシェルスクリプトとして作成します。
- 起動時に実行したい.shファイルをユーザホーム直下に作成する
- .shファイルに実行権限を付与する
sudo chmod +x ./setup_xxx.sh
サービスファイルの作成
-
/etc/systemd/system/にサービスファイルを作成する
以下はサンプル。ExecStartに実行したい.shファイルのパスを記述する
service-name.service[Unit] Description=My Custom Service After=local-fs.target [Service] Type=simple ExecStart=/path/to/your/setup_xxx.sh [Install] WantedBy=multi-user.target[Unit]のAfterはサービスの起動時に依存する他のサービスやターゲットを指定する。複数指定時は半角スペースで区切る
サービス以外に、次のようなものがよく使われるlocal-fs.target- ローカルファイルシステムが利用可能になるまで待つnetwork.target- ネットワークが利用可能になるまで待つdocker.service- Dockerデーモンが起動するまで待つ
[Service]にRestart=alwaysを指定すると、サービスが停止してもサービスを再起動する - サービスファイルに自動起動設定を行う
sudo systemctl enable service-name.service - 再起動する
その他
サービスが起動中か確認する
sudo systemctl status service-name.service
サービスが自動起動状態か確認する
enabledが表示されれば、自動起動状態です。
sudo systemctl is-enabled service-name.service
サービスファイル更新
サービスファイルを更新したら、以下のコマンドを実行します。
sudo systemctl daemon-reload
自動起動状態を停止する
sudo systemctl disable service-name.service 