不均一な日に別のコマンドを実行するコマンド

不均一な日に別のコマンドを実行するコマンド

不均一な日に異なる方法で実行できるコマンドが必要です。

答え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/.bashrcfor bash)に移動し、次のものを使用できます。

run_command

関連情報