株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > systemd サービス・タイマー設定入門(Ubuntu 24.04 LTS)

systemd サービス・タイマー設定入門(Ubuntu 24.04 LTS)


systemd は Linux のシステム・サービスマネージャーです。アプリのデーモン化、自動起動、定期実行(cron の代替)をまとめて管理できます。 本記事では .service ユニットと .timer ユニットの設定方法を実例とともに解説します。


unit ファイルは /etc/systemd/system/ に配置します。

[Unit]
Description=サービスの説明
After=network.target

[Service]
Type=simple
User=ubuntu
WorkingDirectory=/home/ubuntu/myapp
ExecStart=/usr/local/bin/myapp
Restart=on-failure
RestartSec=5
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

オプション 説明
Type=simple ExecStart で起動したプロセスをサービス本体とみなす(デフォルト)
User= 実行ユーザーを指定(root 以外を推奨)
Restart=on-failure 異常終了時に自動再起動
RestartSec=5 再起動前の待機秒数
Environment=KEY=VALUE 環境変数を設定
EnvironmentFile=/etc/myapp.env 環境変数をファイルから読み込む

sudo systemctl daemon-reload          # unit ファイルを再読み込み
sudo systemctl enable myapp           # 自動起動を有効化
sudo systemctl start myapp            # 起動
sudo systemctl status myapp           # 状態確認
sudo systemctl stop myapp             # 停止
sudo systemctl restart myapp          # 再起動
sudo systemctl disable myapp          # 自動起動を無効化

sudo journalctl -u myapp              # 全ログを表示
sudo journalctl -u myapp -f           # リアルタイムで追跡
sudo journalctl -u myapp --since "1 hour ago"
sudo journalctl -u myapp -n 50        # 直近 50 行

cron の代替として .timer ユニットが使えます。.service と同名の .timer を作成します。

/etc/systemd/system/mybackup.service

[Unit]
Description=My Backup Script

[Service]
Type=oneshot
User=ubuntu
ExecStart=/home/ubuntu/scripts/backup.sh

/etc/systemd/system/mybackup.timer

[Unit]
Description=Run My Backup Daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now mybackup.timer
sudo systemctl list-timers

記法 実行タイミング
daily 毎日 00:00:00
weekly 毎週月曜日 00:00:00
*-*-* 02:00:00 毎日 02:00
Mon *-*-* 03:00:00 毎週月曜日 03:00
*-*-1 00:00:00 毎月 1 日の 00:00

Certbot(Let's Encrypt)は snap インストール時に自動で systemd タイマーが登録されます。

sudo systemctl status snap.certbot.renew.timer
sudo systemctl list-timers snap.certbot.renew.timer

このタイマーが正常に動作していることで、90日ごとの証明書更新が自動化されます。


Certbot(Let's Encrypt)の自動更新は systemd タイマーで管理されます。 有料証明書では更新通知メールが届くため、その通知を受け取ったらタイマーを使って更新作業を自動化することも可能です。 証明書の失効を防ぐには定期的な更新管理が重要です。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 RapidSSL 3,960円/1年(税込)〜で SSL証明書を販売しています。審査サポート・インストール代行も対応しています。

SSL証明書の購入はこちら / SSL証明書とは? / インストール代行サービス


Certbot(Let's Encrypt)自動更新設定 — systemd タイマーを使った証明書自動更新
Go 言語 Web アプリ入門 — Go アプリの systemd サービス化
Node.js + Express Web アプリ入門 — Node.js の systemd サービス化


← 技術ドキュメント一覧へ戻る