Systemd スクリプトを実行するサービスのテンプレート

この記事を作った動機 systemd を使って何かしらスクリプトを実行したい(例えば、自動的にネットワークドライブをマウントする)ときとかあるのですが、そのたびに検索したり過去に書いたスクリプトを漁るのは面倒なので、自分用にメモ書きのテンプレを置くだけです。本当にただの自分用テンプレなので、説明とかは全然していません。 配置場所 root で実行したい任意のサービス 操作には管理者権限で、sudo systemctl enable [サービス名]のようにする必要がある。 /etc/systemd/system/ ユーザーごとの任意のサービス 操作には、systemctl --user enable [サービス名]のようにして、--userスイッチが必要であり、サービスが保存されているユーザにログインして操作を行う必要がある。 ~/.config/systemd/user/ テンプレ After= は必ずしも指定する必要はない。依存するものがなければ、この項目はなくてもいい模様である。 スクリプトの実行 最小構成だと、Exec周りは、ExecStartだけでとりあえず動かすことができる。 [Unit] Description=a systemd service run a script. After= [Service] WorkingDirectory= Type=simple User=root ExecStartPre= ExecStart= ExecStartPost= ExecStopPre= ExecStop= ExecStopPost= Restart=on-abort [Install] WantedBy=multi-user.target プログラムの常駐 こちらも、最小構成だと、Exec周りは、ExecStartだけでとりあえず動かすことができる。ただ終了が強制終了になってしまうので注意する。 [Unit] Description=a systemd service run a script. After= [Service] WorkingDirectory= Type=forking User=root ExecStartPre= ExecStart= ExecStartPost= ExecStopPre= ExecStop= ExecStopPost= Restart=on-abort [Install] WantedBy=multi-user.target After= の設定 以下のようにして、どのサービスなどのあとにサービスを実行したいか、参考になると思われる。 ...

April 2, 2025