定期的にシェルスクリプト(例: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 |
設定ファイルやコマンド内容が不安な場合は、確認・アドバイスも可能です。ぜひお気軽にご相談ください。
コメントを残す