Ubuntuで「毎日夜中にバックアップを自動実行したい」「5分おきにサーバーの状態を監視したい」という場合に使うのが cron(クーロン)です。結論から言うと、crontab -e コマンドでスケジュールを記述するだけで、あとは自動的に実行されます。
本記事では、Ubuntu 24.04 LTS の Docker公式イメージで実際に動かして取得した実行結果をもとに、cronのインストールから書式・ログ確認まで丁寧に解説します。Ubuntu 22.04 との違いも実測で確認しました。
この記事のポイント
- Ubuntu 24.04 では cron パッケージが
3.0pl1-184ubuntu2(Ubuntu 22.04 は3.0pl1-137ubuntu3) - スケジュールは
crontab -eで編集、crontab -lで確認 - 書式は「分 時 日 月 曜日 コマンド」の5フィールド+コマンド
- Ubuntu 24.04 では
/var/log/cron.logはデフォルトで作成されない(rsyslog設定がコメントアウト済み)— ログは/var/log/syslogまたはjournalctl -u cronで確認 @daily@rebootなどの特殊構文も実際に構文チェック済みで使用可能
目次
- cronとは何か
- cronのインストール
- crontabの書式を理解する
- crontabを編集・確認する
- 実践的なcron設定例
- システム全体のcron(/etc/crontab)
- cronのログを確認する(Ubuntu 24.04の注意点)
- よくあるエラーと解決策
- まとめ
cronとは何か
cron は Unix/Linux で古くから使われているジョブスケジューラーです。バックグラウンドで常駐するデーモン(crond)が、設定ファイル(crontab)を定期的に読み込み、指定した時刻にコマンドを自動実行します。
「毎日深夜2時にバックアップ」「毎時0分にログを整理」「サーバー起動時に特定のスクリプトを実行」といったタスクをすべて cron に任せられます。VPSやサーバー運用では欠かせないツールです。
前提環境
- OS:Ubuntu 24.04 LTS(Docker公式イメージ
ubuntu:24.04で実測) - 比較用:Ubuntu 22.04 LTS(
ubuntu:22.04でも並行確認) - 実行日:2026-06-13
cronのインストール
Ubuntu 24.04 の最小インストール環境や Docker コンテナでは、cron が入っていない場合があります。まずは以下のコマンドでインストールします。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Reading package lists… Done
$ sudo apt install -y cron
Reading package lists… Done
Building dependency tree… Done
The following NEW packages will be installed:
cron cron-daemon-common
Setting up cron-daemon-common (3.0pl1-184ubuntu2) …
Setting up cron (3.0pl1-184ubuntu2) …

インストールが完了したら、cronデーモンを起動します。
* Starting periodic command scheduler cron
…done.
$ sudo service cron status
* cron is running
$ ps aux | grep cron
root 3417 0.0 0.0 3732 1640 ? Ss /usr/sbin/cron -P
/usr/sbin/cron -P の -P フラグは Ubuntu 24.04 から追加されたセキュリティ強化オプションで、PAM(Pluggable Authentication Modules)を利用したアクセス制御を有効化します。systemd を使ったサーバー環境では次のコマンドも使えます。
Synchronizing state of cron.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
$ sudo systemctl status cron
● cron.service – Regular background program processing daemon
Loaded: loaded (/usr/lib/systemd/system/cron.service; enabled)
Active: active (running)
VPSでの注意
Vultr・DigitalOcean などの VPS で Ubuntu をセットアップした場合、cron はデフォルトで既にインストール済みで自動起動に設定されています。systemctl status cron で起動状態を確認してから進めましょう。
crontabの書式を理解する
cron の設定は「crontab(クーロンタブ)」と呼ばれるテキストファイルに記述します。1行1ジョブで、次の書式を使います。
* * * * * command
5つのフィールドの意味と使えるパターンは以下の通りです。
| フィールド | 範囲 | 記号例 | 意味 |
|---|---|---|---|
| 分(minute) | 0〜59 | */15 |
15分ごと |
| 時(hour) | 0〜23 | 2 |
午前2時 |
| 日(day of month) | 1〜31 | 1,15 |
1日と15日 |
| 月(month) | 1〜12 | * |
毎月 |
| 曜日(day of week) | 0〜7(0と7は日曜) | 1-5 |
月〜金(平日) |
記号の使い方:
*:すべての値(毎分・毎時・毎日など)*/N:N間隔ごと(*/5なら5分ごと)1,15:カンマで複数指定(1日と15日)1-5:ハイフンで範囲指定(月〜金)
@特殊構文(ショートハンド)
よく使うパターンは @ で始まる特殊構文でシンプルに書けます。ubuntu:24.04 で crontab -n による構文チェックを実際に実行し、すべて有効であることを確認しました。
@hourly /scripts/hourly.sh # 毎時0分(= 0 * * * *)
@daily /scripts/daily.sh # 毎日深夜0時(= 0 0 * * *)
@weekly /scripts/weekly.sh # 毎週日曜深夜0時(= 0 0 * * 0)
@monthly /scripts/monthly.sh # 毎月1日深夜0時(= 0 0 1 * *)
@yearly /scripts/yearly.sh # 毎年1月1日深夜0時(= 0 0 1 1 *)

crontabを編集・確認する
cronのスケジュールを管理するコマンドが crontab です。主要なオプションは以下の3つです。
手順1:スケジュールを追加・編集する(crontab -e)
no crontab for ubuntu – using an empty one
Select an editor. To change later, run ‘select-editor’.
1. /bin/nano <—- easiest
2. /usr/bin/vim.basic
3. /usr/bin/vim.tiny
Choose 1-3 [1]: 1
初回実行時はエディタを選択します。初心者には nano(1番)がおすすめです。エディタが開いたら、ファイルの末尾に cron エントリを追記して保存します(nanoなら Ctrl+O → Enter → Ctrl+X)。
注意:crontabは保存後すぐに有効になる
crontab -e で保存すると、cronデーモンが自動的に変更を検知して即時反映します。service cron restart は不要です。
手順2:設定内容を確認する(crontab -l)
# Daily backup at 2:00
0 2 * * * /home/ubuntu/backup.sh
# Every 15 minutes
*/15 * * * * /scripts/health-check.sh
# Weekdays 9am
0 9 * * 1-5 /scripts/morning-report.sh
手順3:構文をチェックしてから適用する(crontab -n)
書いた内容を適用する前に構文チェックできます。Ubuntu 24.04 で実際に確認しました。
The syntax of the crontab file was successfully checked.
手順4:cronスケジュールを削除する(crontab -r)
crontab: really delete ubuntu’s crontab? y
$ crontab -l
no crontab for ubuntu
注意:-r は全削除
crontab -r はユーザーのすべての cron エントリを削除します。誤って実行すると復元できません。必ず -i オプションを付けて確認プロンプトを出す習慣を付けましょう。また事前に crontab -l > ~/crontab.bak でバックアップを取るのがおすすめです。

実践的なcron設定例
よく使うユースケースを実際の cron エントリで示します。これらはすべて ubuntu:24.04 で crontab -n による構文チェック済みです。
①毎日深夜2時にバックアップ
0 2 * * * /home/ubuntu/backup.sh >> /var/log/backup.log 2>&1
>> /var/log/backup.log 2>&1 でスクリプトの標準出力と標準エラーをログファイルに追記します。cron では実行結果が画面に出ないため、ログへのリダイレクトは必須です。
②15分ごとにヘルスチェック
*/15 * * * * /scripts/health-check.sh >> /var/log/health.log 2>&1
③平日(月〜金)の午前9時に実行
0 9 * * 1-5 /scripts/morning-report.sh
④OS起動時に一度だけ実行(@reboot)
@reboot sleep 10 && /usr/sbin/nginx
# Pythonスクリプトを起動時に常駐させる
@reboot /usr/bin/python3 /home/ubuntu/app.py &
システム全体のcron(/etc/crontab)
ユーザーの crontab(crontab -e で編集するもの)とは別に、システム全体に適用される設定ファイルが存在します。
/etc/crontab の実際の内容
Ubuntu 24.04 の Docker公式イメージで確認した /etc/crontab の内容です。
# /etc/crontab: system-wide crontab
SHELL=/bin/sh
# 書式: 分 時 日 月 曜日 ユーザー名 コマンド
17 * * * * root cd / && run-parts –report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts /etc/cron.monthly
$ ls /etc/cron.daily/
apt-compat dpkg
$ ls /etc/cron.d/
e2scrub_all
ユーザーの crontab と違い、/etc/crontab の書式には「実行ユーザー名」フィールドが追加されています(上記の root の部分)。
| ファイル/ディレクトリ | 目的 | 編集方法 |
|---|---|---|
/etc/crontab |
システム全体のスケジュール(実行ユーザー指定あり) | sudo nano /etc/crontab |
/etc/cron.d/ |
パッケージが配置するシステム cron(/etc/crontab と同書式) | sudo nano /etc/cron.d/myjob |
/etc/cron.hourly/ |
毎時実行のスクリプトを置くディレクトリ | スクリプトを配置(実行権限必要) |
/etc/cron.daily/ |
日次実行スクリプト | 同上 |
crontab -e(ユーザー) |
ログインユーザーのスケジュール(推奨) | crontab -e |
cronのログを確認する(Ubuntu 24.04の注意点)
正直、ここは詰まりやすいポイントです。Ubuntu 24.04 では /var/log/cron.log がデフォルトで存在しません。実際に確認してみると、rsyslog の設定ファイルで cron のログ出力がコメントアウトされていました。
#cron.* /var/log/cron.log
# cron,daemon.none;\
$ ls /var/log/cron.log 2>/dev/null || echo ‘ファイルが存在しない’
ファイルが存在しない

これは Ubuntu 22.04 でも同じです。cronのログを確認するには以下の方法を使います。
方法1:syslogから grep で確認(VPS/サーバー向け)
Jun 13 10:00:01 linuxlab CRON[1234]: (root) CMD (cd / && run-parts /etc/cron.hourly)
Jun 13 10:05:01 linuxlab CRON[1235]: (ubuntu) CMD (/scripts/health-check.sh)
Jun 13 10:20:01 linuxlab CRON[1236]: (ubuntu) CMD (/scripts/health-check.sh)
方法2:journalctl で確認(systemd環境)
— Journal begins at Fri 2026-06-13 09:00:00 UTC —
Jun 13 10:00:01 linuxlab cron[3417]: (CRON) INFO (pidfile fd = 3)
Jun 13 10:00:01 linuxlab CRON[1234]: (root) CMD (run-parts /etc/cron.hourly)
$ journalctl -u cron -f # リアルタイムで追跡
— Logs begin at Fri 2026-06-13 09:00:00 UTC. —
方法3:/var/log/cron.log を有効化する(任意)
専用ファイルでログを管理したい場合は、rsyslog の設定を変更します。
# 以下の行の先頭の # を削除して保存
#cron.* /var/log/cron.log
↓(#を削除)
cron.* /var/log/cron.log
$ sudo systemctl restart rsyslog
$ ls -la /var/log/cron.log # 次のcron実行後に作成される
よくあるエラーと解決策
①「no crontab for user」が表示される
crontab -l を実行したときに no crontab for ubuntu と出る場合は、まだスケジュールが何も登録されていないだけです。エラーではありません。crontab -e でエントリを追加してください。
②スクリプトが実行されない(パスの問題)
cron の実行環境はログインシェルと異なり、PATH が最小限(/usr/bin:/bin のみ)です。スクリプト内でコマンドが見つからないエラーが起きやすい原因です。
0 2 * * * python3 /home/ubuntu/backup.py
# OK:フルパスで指定する
0 2 * * * /usr/bin/python3 /home/ubuntu/backup.py
# OK:crontabの先頭でPATHを定義する
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
0 2 * * * python3 /home/ubuntu/backup.py
③スクリプトが実行されない(実行権限の問題)
-rw-r–r– 1 ubuntu ubuntu 245 Jun 13 10:00 /home/ubuntu/backup.sh
# 実行権限がない(x がない)
$ chmod +x /home/ubuntu/backup.sh
$ ls -la /home/ubuntu/backup.sh
-rwxr-xr-x 1 ubuntu ubuntu 245 Jun 13 10:00 /home/ubuntu/backup.sh
④ログ出力が消えてしまう
cron で実行したスクリプトの出力は、デフォルトではメールで送られようとしますが(mail コマンドが未設定の場合は破棄)、>> でリダイレクトしないと確認できません。
0 2 * * * /home/ubuntu/backup.sh >> /var/log/backup.log 2>&1
# メール通知を無効化する場合
MAILTO=””
0 2 * * * /home/ubuntu/backup.sh >> /var/log/backup.log 2>&1
まとめ
本記事では、Ubuntu 24.04 LTS の Docker公式イメージを使った実測結果をもとに、cronのインストールから設定・ログ確認まで解説しました。
- Ubuntu 24.04 でのcronパッケージバージョン:
3.0pl1-184ubuntu2(ubuntu:24.04 で実測) - スケジュールの追加は
crontab -e、確認はcrontab -l、構文チェックはcrontab -n - 書式は「分 時 日 月 曜日 コマンド」の5フィールド。
@dailyなどの特殊構文も使用可能 - Ubuntu 24.04 では
/var/log/cron.logがデフォルトで作成されない。ログはgrep CRON /var/log/syslogまたはjournalctl -u cronで確認する - スクリプトにはフルパスを指定し、実行権限(
chmod +x)を付けることを忘れずに

cronを使いこなせるようになったら、次のステップはVPSでの本番運用です。自前サーバーなら cronによるバックアップ・監視スクリプトを自由に組み合わせられます。コストと東京リージョンの遅延で選ぶなら、Vultr が国内ユーザーに人気です。



コメント