日付の計算で最も奇妙なことが起こります。以下に示すように、10 月 31 日に 1 か月を追加すると 12 月になります。これはあり得ないことです。Ubuntu 16 と 20 でも同じ問題が発生します。この問題により、シェル スクリプトが間違った日付を返すことも発生するため、cron スケジューラだけの問題ではありません。
root@ubuntugc:/home/miuser# date -d "20210930+1 month" +%Y-%m-%d
2021-10-30
root@ubuntugc:/home/miuser# date -d "20211030+1 month" +%Y-%m-%d
2021-11-30
root@ubuntugc:/home/miuser# date -d "20211031+1 month" +%Y-%m-%d
2021-12-01
答え1
これは仕組みですdate
。追加すると、1 month
月が1つ増えるだけです。あなたの場合は2021-11-31
存在しない日付なので、結果は1日進んで有効な日付(2021-12-01
)に移動します。coreutils ドキュメント:
単位のあいまいさは、相対的な項目で問題を引き起こす可能性があります。たとえば、「2020-07-31 -1 か月」は、2020-06-31 が無効な日付であるため、2020-07-01 と評価される可能性があります。前月をより確実に判断するには、現在の月の 15 日の前の月を要求できます。例: