Linuxのcron入門|crontabで定期実行を設定する方法をWSL2・VPSで初心者向けに解説

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > Linuxのcron入門|crontabで定期実行を設定する方法をWSL2・VPSで初心者向けに解説
「毎日決まった時間にバックアップを取りたいけど、手動でコマンドを打つのを忘れてしまう。」
「VPSを借りてLinuxを動かしているけど、定期的なメンテナンスをどうやって自動化すればいいかわからない。」

こういった悩みを解決するのが、Linuxのcron(クーロン)です。cronはLinuxに標準搭載されている「定期タスクスケジューラー」で、決まった時間にコマンドを自動実行する仕組みです。一度設定してしまえば、あとはLinuxが自動で動かしてくれます。

この記事では、cronの仕組みとcrontabの書き方を初心者向けに解説します。WSL2でのcron起動方法、VPSでの実践的な活用例、よくあるトラブルの対処まで、実行例つきでStep-by-Stepに説明します。

動作確認環境:Ubuntu 24.04 LTS(WSL2) / Rocky Linux 9.4(VPS)

この記事のポイント

・cronはLinuxの定期タスクスケジューラー。crontab -e で設定する
・crontabは「分 時 日 月 曜」の5フィールドで実行タイミングを指定する
・WSL2ではcronが自動起動しないためsudo service cron startが必要
・VPSではcrondが常駐しているためcrontab -eで即座に設定できる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

cronとは?Windowsの「タスクスケジューラー」に相当するLinuxの仕組み

Windowsに「タスクスケジューラー」という機能があるように、Linuxにはcronという定期実行の仕組みが最初から備わっています。

cronの正体は、バックグラウンドで常時動いているcrondデーモン(「クーロンディー」と読みます)です。crondは1分ごとに設定ファイル(crontab)をチェックして、条件に一致するコマンドを自動で実行します。

cronでできることの例
・毎日深夜2時にデータのバックアップを取る
・5分ごとにWebサービスの死活確認をする
・毎週月曜日の朝9時にレポートをメールで送る
・毎月1日の午前0時に古いログファイルを削除する

一度設定すれば自動で動き続けるため、定期的な作業を手動でやる手間から解放されるのがcronの最大のメリットです。

crontabの書き方|5つのフィールドを理解する

cronの設定はcrontab(クーロンタブ)と呼ばれるファイルに書きます。1行が1つの定期タスクで、以下の形式で記述します。

# 書式:5フィールドの後にコマンドを書く 分 時 日 月 曜 実行するコマンド # 例:毎日午前2時にbackup.shを実行 0 2 * * * /home/user/backup.sh

「分 時 日 月 曜」の5フィールドで実行タイミングを決めます。それぞれの意味を1つずつ見ていきましょう。

1. 分(minute)~ 0~59の値を指定する

1時間の中の何分に実行するかを指定します。0 は「0分ちょうど(毎時00分)」、30 は「30分」を意味します。

2. 時(hour)~ 0~23の値を指定する

1日の中の何時に実行するかを指定します。0 は午前0時(深夜0時)、9 は午前9時です。24時間表記を使います。

3. 日・月・曜のフィールド

日(1~31)・月(1~12)・曜(0~7、0と7がどちらも日曜日)を指定します。*(アスタリスク)は「すべての値に一致」を意味し、制限なしという指定になります。

4. よく使う時刻指定パターン一覧

やりたいこと crontab記述例
毎分実行する * * * * * コマンド
毎日午前2時に実行する 0 2 * * * コマンド
5分ごとに実行する */5 * * * * コマンド
毎週月曜日の朝9時に実行する 0 9 * * 1 コマンド
毎月1日の深夜0時に実行する 0 0 1 * * コマンド
平日(月~金)の夕方18時に実行する 0 18 * * 1-5 コマンド

cronを実際に設定する手順

1. crontabエディタを開く

以下のコマンドでcrontabの編集画面を開きます。

$ crontab -e

初めて実行すると、エディタを選ぶメッセージが表示されます。迷ったら1(nano)を選んでください。nanoはvimよりもキーボード操作がシンプルで初心者向けです。

2. テスト用のcronジョブを書く

まず動作確認のため、1分ごとに現在の日時をファイルに書き出すジョブを設定してみましょう。

# テスト:1分ごとに現在時刻をログファイルに書き出す * * * * * /bin/date > /home/user/cron_test.log

/home/user/ の部分は自分のホームディレクトリのパスに変えてください。
nanoで編集した場合は Ctrl + O で保存、Ctrl + X で終了します。

3. 設定内容の確認と動作テスト

保存後、crontabの内容を確認します。

$ crontab -l # テスト:1分ごとに現在時刻をログファイルに書き出す * * * * * /bin/date > /home/user/cron_test.log

1~2分ほど待ってから、ファイルに書き込まれているか確認しましょう。

$ cat /home/user/cron_test.log 2026年 7月 30日 水曜日 02:03:01 JST

このように日時が記録されていれば、cronが正常に動いています。テストが確認できたら、このジョブは削除しておきましょう(crontab -e で該当行を削除して保存)。

WSL2でcronを使う場合の注意点

WSL2はWindowsの上でLinuxを動かす仕組みですが、WSL2が起動した時にcrondは自動で立ち上がりません。これはWSL2特有の挙動で、cronを設定したのに動かないと最初に戸惑う方が多いポイントです。

1. Ubuntu(WSL2)でcronを起動する

# cronデーモンを起動する $ sudo service cron start # 状態を確認する $ sudo service cron status * cron is running

WSL2のターミナルを閉じても、WSL2が動いている間はcronが動き続けます。ただし、PCを再起動したり wsl --shutdown コマンドを実行したりすると停止するため、再度起動が必要です。

2. WSL2でsystemdを有効化している場合

/etc/wsl.confsystemd=true を設定している場合は、systemdを使ってcronを永続的に自動起動できます。

# systemdが有効な場合:cronを自動起動に登録する $ sudo systemctl enable --now cron # 自動起動設定と起動状態を確認する $ systemctl status cron

3. WSL2でのcron活用場面

WSL2のcronは「Windowsを使っている時間帯の自動化」に向いています。
・ローカルの開発環境でのテスト自動化
・開発作業中に定期実行したいスクリプト
・Windowsが起動している間だけLinuxで処理をかける用途

24時間連続で動かしたいタスク(定期バックアップ・サーバー監視)は、常時稼働できるVPSが適しています。

VPSでのcron活用例

さくらVPSやConoHaなどのVPSでは、crondが最初から起動していますcrontab -e で設定するだけですぐに使えます。

1. crondの稼働状態を確認する

# Rocky Linux / RHEL系の場合 $ systemctl status crond * crond.service - Command Scheduler Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled) Active: active (running) since Wed 2026-07-30 00:00:01 JST Main PID: 1234 (crond) # Ubuntu系の場合 $ systemctl status cron * cron.service - Regular background program processing daemon Loaded: loaded (/lib/systemd/system/cron.service; enabled) Active: active (running) since Wed 2026-07-30 00:00:01 JST

「active (running)」と表示されていれば正常です。

2. 実践例:毎日深夜にWebサイトをバックアップする

以下は、毎日午前2時に /var/www/html を圧縮してバックアップするcronジョブの例です。

# 毎日午前2時にWebサイトをバックアップしてログに記録する 0 2 * * * /bin/tar -czf /home/user/backup/www_$(date +\%Y\%m\%d).tar.gz /var/www/html

このジョブのポイント
$(date +\%Y\%m\%d) で日付をファイル名に含めると、毎日別ファイルとして保存されます
・cronの中で % を使う場合は \% とバックスラッシュでエスケープが必要です
・コマンドは絶対パス(/bin/tar)で指定するのがVPSでの基本です

cronが動かない時のトラブルシュート

1. crondが起動していない

最も多いのは、crondが停止しているか自動起動になっていないケースです。

# crondの状態確認(Rocky Linux / RHEL系) $ systemctl status crond # 停止していたら起動する $ sudo systemctl start crond # 再起動時も自動起動するよう設定する $ sudo systemctl enable crond

2. コマンドが見つからない(PATHの問題)

cronはシェルとは異なる実行環境で動くため、PATHが通常のターミナルと違います。python3node など、コマンド名だけでは見つからないことがあります。

# コマンドの絶対パスをwhichで調べる $ which python3 /usr/bin/python3 # cronの中では絶対パスで指定する */5 * * * * /usr/bin/python3 /home/user/check.py

3. スクリプトに実行権限がない

シェルスクリプトを実行する場合は、実行権限(755など)が付いているか確認してください。

# 実行権限を付与する $ chmod +x /home/user/backup.sh # 権限が付いているか確認する $ ls -l /home/user/backup.sh -rwxr-xr-x 1 user user 256 Jul 30 01:00 /home/user/backup.sh

4. cronのログを確認する

cronが実行されたかどうかはシステムログで確認できます。

# journalctlでcronのログを確認する(Rocky Linux / RHEL系) $ sudo journalctl -u crond --since "1 hour ago" # Ubuntu系の場合 $ sudo journalctl -u cron --since "1 hour ago"

本記事のまとめ

やりたいこと コマンド・設定
crontabを編集する crontab -e
設定内容を確認する crontab -l
毎日午前2時に実行する 0 2 * * * コマンド
5分ごとに実行する */5 * * * * コマンド
WSL2でcronを起動する(Ubuntu) sudo service cron start
VPSでcrondの状態を確認する(RHEL系) systemctl status crond
cronのエラーログを確認する sudo journalctl -u crond --since "1 hour ago"
cronを使いこなすと、手動でやっていた定期作業から完全に解放されます。まずはWSL2で「1分ごとに日時をファイルに書き出す」テストジョブから試してみてください。動いていることが確認できたら、バックアップや死活監視スクリプトに応用していきましょう。

関連記事 ~ ここから実践的なスキルを身につける

cronでスクリプトを自動実行するなら、次はシェルスクリプトの書き方も身につけておきましょう。また、サーバー管理に必要な周辺スキルも以下の記事でまとめています。

シェルスクリプト:set -xコマンドでシェルスクリプトをデバッグする方法 ~ cronで動かすスクリプトの問題を効率よく調べる
セキュリティ:fail2banでSSHの不正アクセスを自動ブロックする方法 ~ VPSのセキュリティ自動化の基本
サーバー構築:nmcliコマンドでネットワーク接続を設定する方法 ~ サーバーのネットワーク設定を確実に行う
トラブルシューティング:straceコマンドでプロセスのシステムコールを追跡する方法 ~ cronが動かない原因を深掘りする
ディスク操作:duコマンドでディレクトリの使用量を調べる方法 ~ バックアップファイルの容量を管理する
ネットワーク:mtrコマンドでネットワーク経路と品質を確認する方法 ~ cronで死活監視する前に疎通を確認する
Linux Tips:loggerコマンドでシステムログに記録する方法 ~ cronジョブの実行履歴をsyslogに残す
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
cronの自動化を使いこなしながら、実務で通用するサーバー管理のスキルを体系的に身につけたい方は、ぜひ受け取ってみてください。
無料マニュアルを受け取る >>

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。