はじめに
Linux環境では、シェルスクリプトとcronを組み合わせることで、日次処理を自動化できます。
例えば、ログのバックアップ・データの集計・定期的なファイル整理といったタスクを自動化することで、作業の効率化とヒューマンエラー防止が可能です。
この記事では、シェルスクリプト作成 → 実行権限の付与 → cron設定までを具体例付きで解説します。
ステップ1:シェルスクリプトを作成する
まずは、日次処理の内容をシェルスクリプトとしてまとめましょう。
以下は例として、指定ディレクトリのログファイルを日付付きでバックアップするスクリプトです。
#!/bin/bash
# バックアップ元ディレクトリ
SOURCE_DIR="/var/log/myapp"
# バックアップ先ディレクトリ
BACKUP_DIR="/home/user/backup"
# 日付フォーマット (例: 2025-08-17)
TODAY=$(date +"%Y-%m-%d")
# バックアップ用ディレクトリを作成
mkdir -p "${BACKUP_DIR}/${TODAY}"
# ログファイルをコピー
cp -r ${SOURCE_DIR}/* "${BACKUP_DIR}/${TODAY}/"
# 古いバックアップを7日以上で削除
find "${BACKUP_DIR}" -type d -mtime +7 -exec rm -rf {} \;
echo "バックアップ処理が完了しました: ${TODAY}"
ポイント
date +"%Y-%m-%d"
で日付をフォーマットmkdir -p
で存在しないディレクトリを自動作成find ... -mtime +7
で7日以上前のバックアップを削除(世代管理)
ステップ2:実行権限を付与する
作成したスクリプトに実行権限を付けます。
chmod +x /home/user/scripts/daily_backup.sh
これで手動実行できるようになります。
/home/user/scripts/daily_backup.sh
ステップ3:cronで自動実行を設定する
日次処理を自動化するには、cron
に登録します。
cronの設定方法
- crontabを編集
crontab -e
- 以下を追記(例:毎日午前2時に実行)
0 2 * * * /home/user/scripts/daily_backup.sh >> /home/user/scripts/backup.log 2>&1
設定の意味
0 2 * * *
→ 毎日2時0分に実行>> backup.log 2>&1
→ 標準出力とエラーをログファイルに追記
ステップ4:動作確認
cronの動作確認は、ログを確認するのが確実です。
tail -f /var/log/syslog # Debian/Ubuntu 系
tail -f /var/log/cron # CentOS/RHEL 系
また、スクリプトに echo
を入れてログファイルに出力するのも有効です。
応用例
日次処理の自動化は、以下のような場面でも使えます。
- データベースのバックアップ
mysqldump -u root -p mydb > /home/user/backup/db_$(date +%F).sql
- 不要ファイルの削除
find /tmp -type f -mtime +3 -delete
- サーバー状態レポートの保存
df -h > /home/user/report/disk_$(date +%F).txt
まとめ
- シェルスクリプトで日次処理をまとめる
chmod +x
で実行可能化cron
で定期実行する
これにより、定型業務を自動化でき、作業効率が大幅にアップします。
実務では「バックアップ」「レポート出力」「ログ整理」などに活用するのが一般的です。