環境変数からcronジョブの時間を動的に埋める方法があるのだろうかと思います。たとえば:crontabのシステム変数に基づいてcronジョブの時間を動的に設定する
$JOB_MINUTES * * * * /tmp/my_script.sh
で次に
export JOB_MINUTES=4
4 * * * * /tmp/my_script.sh
環境変数からcronジョブの時間を動的に埋める方法があるのだろうかと思います。たとえば:crontabのシステム変数に基づいてcronジョブの時間を動的に設定する
$JOB_MINUTES * * * * /tmp/my_script.sh
で次に
export JOB_MINUTES=4
4 * * * * /tmp/my_script.sh
環境変数のcrontabの中で結果のcrontabファイルの内部で展開されません。しかし、echo
コマンドをcrontab
にパイプすることによって、crontabファイルを作成するときに環境変数を使用することができます。
-
filename引数は、標準入力からcrontabの内容を取得することを意味します。
@のbarmarのソリューションのオフに基づいていますが、この1つはインプレース置換ん:
{ crontab -l | sed -E "s#^[^ ]* (.*/tmp/my_script.sh.*)#$JOB_MINUTES \1#"; } | crontab -
/tmp/my_script.sh
を持っていることを前提として置き換えますコマンドライン(お客様の要件に合わせて変更)両方のアプローチを1つに組み合わせることができます。
if ! crontab -l | grep -q /tmp/my_script.sh; then
# add to cron
{ crontab -l ; echo "$JOB_MINUTES * * * * /tmp/my_script.sh"; } | crontab -
else
# update cron
{ crontab -l | sed -E "s#^[^ ]* (.*/tmp/my_script.sh.*)#$JOB_MINUTES \1#"; } | crontab -
fi
コマンドを実行すると、次のエラーが表示されます。 '' - 25:悪い時」 – sudobangbang
スクリプトと*文字をエスケープする必要がありました – sudobangbang
良い点。私は答えを更新し、クーロンの行を二重引用符で囲みました。 – codeforester