自動シャットダウン設定(systemd-timer)

このページでは、Linux Mint を平日18:00に自動シャットダウンするための systemd-timer を使った安全で確実な方法をまとめています。 cron ではなく systemd を使う理由や、サービス・タイマーの作成手順を 初心者にも分かりやすく解説します。

最終更新:

1. はじめに(cron ではなく systemd を使う理由)

Linux Mint では、決まった時間に自動で処理を実行する方法として cronsystemd-timer の2種類があります。 ネット上の情報では cron を使った例が多く見つかりますが、 現在の Linux Mint / Ubuntu では systemd-timer が推奨されています。

cron より systemd-timer が優れている理由

  • PC が電源 OFF のとき cron は実行されない
    → systemd は「Persistent=true」で補完動作が可能
  • systemd はサービスとタイマーを分離できる
    → シャットダウン処理を安全に管理できる
  • ログが journalctl に残る
    → cron よりトラブルシューティングが簡単
  • OnCalendar=Mon..Fri 18:00 のように柔軟な指定が可能
  • Ubuntu / Mint の公式ドキュメントでも systemd が標準

以上の理由から、このページでは systemd-timer を使った平日18:00の自動シャットダウン を設定します。

2. 自動シャットダウン用サービスの作成

まずは、シャットダウン処理そのものを行う systemd サービスファイル を作成します。

次のファイルを作成します。

sudo nano /etc/systemd/system/auto-shutdown.service
→ サービスファイルを新規作成します。

内容を以下のように記述します。

[Unit]
Description=Auto shutdown at 18:00 on weekdays

[Service]
Type=oneshot
ExecStart=/usr/sbin/shutdown -h now
→ シャットダウン処理を実行するサービスです。

保存して nano を終了します。

3. 平日18:00に実行するタイマーの作成

次に、先ほど作成した auto-shutdown.service平日18:00に実行する systemd-timer を作成します。

次のファイルを作成します。

sudo nano /etc/systemd/system/auto-shutdown.timer
→ タイマー設定ファイルを新規作成します。

内容を以下のように記述します。

[Unit]
Description=Run auto-shutdown at 18:00 on weekdays

[Timer]
OnCalendar=Mon..Fri 18:00
Persistent=true

[Install]
WantedBy=timers.target
→ 平日18:00にサービスを実行するタイマー設定です。

設定のポイント(OnCalendar の例)

  • 平日18:00に実行(今回の設定)
    OnCalendar=Mon..Fri 18:00
  • 毎日18:00に実行
    OnCalendar=18:00
  • 土日のみ実行
    OnCalendar=Sat,Sun 18:00
  • 毎時00分に実行
    OnCalendar=*:00
  • 毎時30分に実行
    OnCalendar=*:30
  • 5分ごとに実行
    OnCalendar=*:0/5
  • 毎月1日の朝9時に実行
    OnCalendar=monthly 09:00
  • 毎年1月1日の0時に実行
    OnCalendar=yearly
  • Persistent=true
    → PC が18:00に電源 OFF でも、次回起動時に「補完実行しない」安全仕様
  • WantedBy=timers.target
    → タイマーを systemd に登録するための設定

systemd の OnCalendar は cron より柔軟で、 「曜日」「日付」「時刻」「間隔」を自由に組み合わせられます。

4. 有効化と動作確認

作成したサービスとタイマーを systemd に読み込ませます。

sudo systemctl daemon-reload
→ systemd に新しい設定ファイルを読み込ませます。

タイマーを有効化して起動します。

sudo systemctl enable --now auto-shutdown.timer
→ タイマーを有効化し、即時起動します。

タイマーの状態確認

systemctl list-timers --all
→ 登録されているタイマー一覧を表示します(設定ミスでもエラーは出ません)。

一覧の中に auto-shutdown.timer が表示されていれば設定完了です。

ログの確認(実行履歴)

journalctl -u auto-shutdown.service
→ サービスの実行ログを確認できます。

systemd はログが残るため、cron よりもトラブルシューティングが容易です。

5. テスト方法とトラブルシューティング

サービスのテスト(即時シャットダウンが実行されるので注意)

まずは、シャットダウン処理そのものが正しく動作するかを確認します。 これは 設定時刻とは無関係に、即座にシャットダウンが実行されるテスト です。

sudo systemctl start auto-shutdown.service
→ サービスを手動実行します(即シャットダウンされるので注意)。

※ このテストは「サービスが動くか」の確認であり、タイマーが正しく動くかとは別問題です。

タイマーの状態確認

タイマーが systemd に正しく登録されているかを確認します。

systemctl list-timers --all
→ 登録されているタイマー一覧を表示します(設定ミスでもエラーは出ません)。

NEXT(次回実行時刻)と ACTIVATES(呼び出すサービス名)が正しければ OK です。

タイマーの詳細確認

systemctl status auto-shutdown.timer
→ タイマーの状態・読み込み状況・次回実行予定を確認できます。

シャットダウンが設定通りに実行されたか確認する方法

systemd は実行ログが残るため、設定した時刻にシャットダウンが実行されたかを後から確認できます。

  • ① シャットダウン処理(サービス)が実行されたか確認
    journalctl -u auto-shutdown.service
    → サービスが実行された日時・成功/失敗が記録されます。

    成功時のログ例:

    Feb 17 18:00:00 mint systemd[1]: Starting Auto shutdown at 18:00 on weekdays...
    Feb 17 18:00:00 mint systemd[1]: auto-shutdown.service: Succeeded.
    Feb 17 18:00:00 mint systemd[1]: Finished Auto shutdown at 18:00 on weekdays.
    → このログが出ていれば「設定通りにシャットダウン処理が実行された」と確定します。
  • ② 実際にシャットダウンしたか確認
    journalctl -b -1 | grep shutdown
    → 前回の起動ログから、電源断の記録を確認できます。
  • ③ タイマーがサービスを呼び出したか確認
    journalctl -u auto-shutdown.timer
    → タイマーが正しく動作し、サービスを起動したかを確認できます。

よくある問題と対処

  • ファイル名のスペルミス
    /etc/systemd/system/auto-shutdown.timer を確認
  • systemd の再読み込み忘れ
    sudo systemctl daemon-reload
  • タイマーが有効化されていない
    sudo systemctl enable --now auto-shutdown.timer
  • サービスが失敗している
    journalctl -u auto-shutdown.service で原因を確認

6. まとめ

systemd-timer を使うことで、Linux Mint を 平日18:00に自動シャットダウンさせることができます。

  • cron より安全で確実
  • ログが残るためトラブル対応が容易
  • サービスとタイマーを分離できるため管理しやすい
  • 学院のような「決まった時間に閉館する環境」に最適

BIOS の自動起動と組み合わせることで、 完全無人での運用が可能になります。