ユーザーは定期的に実行したいスクリプトやプログラムをCRONジョブとして設定できます。しかし、既に同じジョブが設定されていないかを確認し、重複を避けながら新たなジョブを追加する自動化スクリプトの作成は少々複雑になり得ます。
必要条件
- Linux OS
- シェルアクセス
スクリプトサンプル
#!/bin/bash
# ジョブ定義
job="0 5 * * * /path/to/your/script.sh"
# crontabにジョブがすでに存在するか確認
crontab -l | grep -Fq "$job"
# 確認の結果、ジョブが存在しない場合は追加
if [ $? -ne 0 ]; then
(crontab -l; echo "$job") | crontab -
echo "CRON job 追加した"
else
echo "CRON job 既に存在する"
fi
- ジョブ定義: スクリプトやコマンドを含むジョブの全体的な設定を行います。
- ジョブ存在確認: crontab -l で現在のCRONジョブリストを取得し、grep で特定のジョブがリスト内に存在するか確認します。
- 条件分岐: ジョブが存在しない場合、既存のCRONジョブに新しいジョブを追加しています。
-
(crontab -l; echo "$job") | crontab -
:crontabリスト (crontab -l
)及び新JOB(echo "$job"
)はcronに書き込み(crontab -
)。
参考
-
grep -F
: 指定した各パターンを、正規表現ではなく文字列として扱います。 -
grep -q
: 行の一致に関係なく、標準出力への書き出しをすべて抑止します。