ドキュメント
クイックスタート + 機能・デバイスごとの解説(随時更新中)
スケジュールタスク(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 を管理します。