現場実践|Linux自動化

LinuxのCronで自動化入門
定期実行タスクの設定方法

「毎晩0時にバックアップを取りたい」「毎週月曜日にレポートを送りたい」——Cronを使えばそれらが全て自動化できます。Cron設定の基礎と実践例を解説します。

読了目安:約15分更新日:2026年3月

💡 Cronはインフラエンジニアの「時間節約の最強ツール」。一度設定すれば毎日・毎週・毎月のルーティン作業が自動で完了します。

この記事を書いた人
現役ITエンジニア・IT講師(経験14年)
CCNA・CCNP 取得LPIC-1 保有AzureFundamentals 保有SES現場を複数経験

Linuxのサーバー管理・自動化スクリプト作成を多数経験してきた立場から解説します。

1. Cronとは

まず、CronはLinuxの標準的な定期実行スケジューラです。crontabコマンドでジョブ(実行するコマンド・スクリプト)と実行時刻を登録すると、指定した時刻に自動的に実行されます。

2. crontabの書き方

# crontabの書式:
# 分(0-59) 時(0-23) 日(1-31) 月(1-12) 曜日(0-7,0と7は日曜) コマンド

# 毎日0時にバックアップスクリプトを実行
0 0 * * * /home/admin/scripts/backup.sh

# 毎週月曜日8時にレポートを送信
0 8 * * 1 /home/admin/scripts/send_report.sh

# 毎時0分にディスク使用量をチェック
0 * * * * df -h >> /var/log/disk_check.log

# 5分おきに死活監視スクリプトを実行
*/5 * * * * /home/admin/scripts/health_check.sh
# crontabの編集・確認コマンド
crontab -e   # 現在のユーザーのcrontabを編集
crontab -l   # 登録されているジョブを確認
crontab -r   # 全ジョブを削除(注意:元に戻せない)

3. 実践サンプル集

  • 毎日0時にmysqldumpでDBバックアップ:0 0 * * * mysqldump -u root -pPASS db > /backup/db_$(date +%Y%m%d).sql
  • 毎週日曜日3時にyum updateを実行:0 3 * * 0 yum update -y >> /var/log/yum_update.log 2>&1
  • 毎分死活監視してメール通知:* * * * * curl -s http://localhost > /dev/null || echo "サーバー障害" | mail -s "Alert" admin@example.com

4. よくあるトラブルと対処法

スクリプトを手動実行すると動くがCronから動かない
Cronは環境変数(PATH等)がシェルと異なるため、スクリプト内でコマンドのフルパスを指定する(例:/usr/bin/mysqldump)か、crontabの先頭にPATHを定義する。
実行されているか確認したい
grep CRON /var/log/messagesまたはjournalctl -u crondでCronのログを確認する。スクリプトの出力を2>&1 >> /var/log/cron_job.logでログファイルに記録するのも有効。
📌 この記事のポイント
  • crontabは「分 時 日 月 曜日 コマンド」の順で記述する
  • Cronではコマンドをフルパスで指定するのが基本
  • 実行ログを必ずファイルに残して動作確認できるようにする

キャリアの疑問、一緒に解決しませんか?

Infra Academyでは、インフラ系ITエンジニアを目指す方への個別サポートを行っています。2026年7月からフリーランス講師として本格始動予定です。

※Cronの仕様はOSバージョンにより異なる場合があります。

ABOUT ME
たから
サラリーマンをしながら開業して経営やってます。 今年、本業で独立・別事業を起業予定です。 ◆経験:IT講師/インフラエンジニア/PM/マネジメント/採用/運用・保守・構築・設計 ◆取得資格:CCNA/CCNP/LPIC-1/AZ-900/FE/サーティファイC言語 ◆サイドビジネス:アパレル事業/複数のWEBメディアを運営