定期的にシェルスクリプト(例:clean_logs.sh)を自動実行させる方法をステップバイステップで解説します。CentOSやWSL2環境にも対応しています。
1. スクリプトに実行権限を付与する
まず、作成したシェルスクリプトに実行権限を付けます。
chmod +x /home/youruser/scripts/clean_logs.sh
2. スクリプト内のコマンドはフルパスで指定する
cronでは環境変数が限定されているため、findやrmなどのコマンドもフルパスで記述します。
#!/bin/bash
LOG_DIR="/var/log/httpd"
FIND_BIN="/usr/bin/find"
RM_BIN="/usr/bin/rm"
$FIND_BIN "$LOG_DIR" -name "*.log" -mtime +90 -exec $RM_BIN -f {} \;
3. crontabに登録する
次に、crontabにスクリプトを登録します。
crontab -e
エディタが開いたら、以下のように記述します。
0 2 * * * /home/youruser/scripts/clean_logs.sh >> /var/log/clean_logs.log 2>&1
この例では、毎日2:00にスクリプトを実行し、ログは/var/log/clean_logs.logに出力されます。
曜日・時間の設定パターン
| フィールド | 意味 | 設定例 |
|---|---|---|
| 分 | 0〜59 | 0(ちょうど0分) |
| 時 | 0〜23 | 2(午前2時) |
| 日 | 1〜31 | *(毎日) |
| 月 | 1〜12 | *(毎月) |
| 曜日 | 0〜6(日=0) | *(毎日) |
週1回だけ実行したい場合(毎週日曜深夜)
0 0 * * 0 /home/youruser/scripts/clean_logs.sh >> /var/log/clean_logs.log 2>&1
4. 登録内容を確認する
crontab -l
5. ログ出力場所についての注意点
cronによる出力は通常、メール送信または/var/log/cronに記録されます。任意のファイルにログを残したい場合は、リダイレクトを使用してください:
>> /var/log/clean_logs.log 2>&1
6. WSL2環境での注意点
WSL2ではcronデーモンが自動起動しないため、手動で起動が必要です。
# Ubuntu系の場合
sudo service cron start
# CentOS系の場合
sudo /etc/init.d/crond start
起動確認:
ps aux | grep cron
WSL2でcronを自動起動したい場合は、.bashrcに記述するなどの対応が必要です。
まとめ
| やること | コマンド・説明 |
| スクリプトに実行権限を付ける | chmod +x script.sh |
| crontabを編集する | crontab -e |
| フルパス指定で登録する | /full/path/to/script.shを記述 |
| WSL2ではcronの起動が必要 | sudo /etc/init.d/crond startなどで手動起動 |
| 登録結果を確認する | crontab -l |
設定ファイルやコマンド内容が不安な場合は、確認・アドバイスも可能です。ぜひお気軽にご相談ください。
コメントを残す