ドキュメント

クイックスタート + 機能・デバイスごとの解説(随時更新中)

スケジュールタスク(Cron)

本記事では、対象サーバー上の定時タスクを管理する方法を説明します。

まず理解する:Cron とは

Cron は Linux に標準搭載された「定時スケジューリング」ツールです。「毎日午前 3 時にデータベースを自動バックアップする」「1 時間ごとにログを削除する」「毎週月曜日にサービスを再起動する」といったことを、時刻が来たら自動実行させられます。人が見張る必要はありません。

機能概要

対象サーバー上の Cron 定時タスクを表示、追加、削除します。

利用シーン

  • データベースの定時バックアップ、ログの削除
  • 監視スクリプトの定時実行
  • サービスの定時再起動、証明書の更新

使い方

あるサーバーの「システム管理パネル → スケジュールタスク」に入ると、そのサーバーの現在の Cron タスクをすべて確認できます。

タスクの追加

Cron 式と実行するコマンドを入力します:

フィールド説明
時刻式5 フィールド形式、例 0 3 * * *(毎日午前 3 時)
コマンド実行する shell コマンド

Cron 式の形式(分 時 日 月 曜):

* * * * *  コマンド
│ │ │ │ │
│ │ │ │ └── 曜日 (0-7, 0/7=日曜)
│ │ │ └──── 月 (1-12)
│ │ └────── 日 (1-31)
│ └──────── 時 (0-23)
└────────── 分 (0-59)

よく使う例:

式意味
*/5 * * * *5 分ごと
0 * * * *1 時間ごと
0 3 * * *毎日午前 3 時
0 3 * * 1毎週月曜日の午前 3 時
0 3 1 * *毎月 1 日の午前 3 時
0 3 * * 0毎週日曜日の午前 3 時
30 2 * * *毎日午前 2 時 30 分

実用的なコマンド例:

# 毎日午前 3 時にデータベースをバックアップ(例)
0 3 * * * docker exec sshe-mysql mariadb-dump -uroot -p'<パスワード>' dbname > /opt/backup/db-$(date +\%F).sql

# 6 時間ごとに一時ファイルを削除
0 */6 * * * find /tmp -type f -mtime +7 -delete

# 毎週月曜日の午前 4 時にサービスを再起動
0 4 * * 1 systemctl restart my-app

注意事項

1. Cron タスクは対象サーバーの現在のユーザーの権限で実行されます。そのユーザーがコマンドを実行する権限を持っていることを確認してください。

2. コマンドには絶対パスを書くことを推奨します(Cron の環境変数は少なく、相対パスではプログラムが見つからないことがあります)。

3. コマンド内で % を使う場合は \% にエスケープしてください(Cron は % を特殊文字として扱います)。

4. Cron タスクを削除すると即座に反映されます。

5. システムレベルの Cron(/etc/crontab)の変更はパネル外での操作が必要な場合があります。パネルは既定で現在のユーザーの crontab -l を管理します。