
不均一な日に異なる方法で実行できるコマンドが必要です。
答え1
一般ユーザーとしてcrontab -e
編集を実行します。あなたのクローンタップ。 crontabに次のように入力します。
00 12 1-31/2 * * /path/to/the/command_for_odd_days
00 12 2-30/2 * * /path/to/the/command_for_even_days
このコマンドは毎日12:00(正午)に実行されます。
コンピュータ管理者の場合は、次のように生成できます。
/etc/cron.d/myservice
ファイルには、コマンドを実行する必要があるユーザーを指定する必要があることを除いて、内容は似ています。
00 12 1-31/2 * * someuser /path/to/the/command_for_odd_days
00 12 2-30/2 * * someuser /path/to/the/command_for_even_days
man 5 crontab
これらのcrontab形式の詳細については、実行してください。
1-31/2の構文(1から31の間の2日ごと)は、Ubuntuシステムで利用可能なすべてを含むほとんどの最新のcron実装で認識されるべきです。サポートされていない古代システムに会ったら1,3,5,7,...,29,31
。
答え2
%e
ユーティリティの書式指定子は、date
月の日付を1から31の整数として提供します(1から9までは前にスペースがありますが、算術拡張に使用される場合は無害です)。
day=$( date +%e )
数値が奇数か偶数かをテストするには、次の手順を実行します。
if [ "$(( day % 2 ))" -eq 0 ]; then
# $day is even
else
# $day is odd
fi
これをシェル関数に変換します。
run_command () (
day=$( date +%e )
if [ "$(( day % 2 ))" -eq 0 ]; then
# $day is even
some_command_on_even_days
else
# $day is odd
other_command_on_odd_days
fi
)
これはシェル初期化ファイル(たとえば$HOME/.bashrc
for bash
)に移動し、次のものを使用できます。
run_command