はじめに
/etc/cron.daily/
以下に設定した自動タスクがなぜか毎日2回実行されてしまうので、原因を調査しました。
初歩的なミスでした。。
原因
/etc/cron.d/dailyjobs
を編集する前に、オリジナルをバックアップしておこうとして、同ディレクトリに配置していたのが原因でした。
$ ls -la /etc/cron.d
-rw-r--r--. 1 root root 128 Nov 1 2022 0hourly
-rw-r--r-- 1 root root 506 May 2 10:01 dailyjobs
-rw-r--r-- 1 root root 506 May 2 10:01 dailyjobs.bak
/etc/cron.d/dailyjobs
でも/etc/cron.d/dailyjobs.bak
でも/etc/cron.daily
を呼んでいるため、必然的に2回実行されます1。
/etc/cron.d/dailyjobs
# Run the daily, weekly, and monthly jobs if cronie-anacron is not installed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# run-parts
30 1 * * * root [ ! -f /etc/cron.hourly/0anacron ] && bash /home/wsigma21/script/dummy.sh
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
/etc/cron.d/dailyjobs.bak
# Run the daily, weekly, and monthly jobs if cronie-anacron is not installed
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# run-parts
02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily
22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly
42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
dailyjobs
という名前にしなければ実行されないと思っていたのですが、、名前に関係なく、/etc/cron.d/
以下の設定ファイルは全て毎日実行されます。
対策
バックアップファイルを/etc/cron.d/
以外に配置します。
おわりに
最初は/etc/cron.daily/
に配置したタスクの設定の誤りだと思い、時間をかけて色々調べたのですが、結局はcronに関する理解不足が原因でした。
参考
cronの何たるかは以下が勉強になりました。
-
/etc/cron.weekly/
と/etc/cron.monthly/
以下のタスクも2回実行されることになります。ただし、今回は両方とも空でした。 ↩