Я хочу перебрать список скриптов bash с заданием cron. Т.е. каждые два часа я хочу запустить еще один скрипт bash. Моя идея состояла в том, чтобы установить новую переменную окружения, каждый раз, когда скрипт cronjob читает эту переменную окружения и вызывает соответствующий скрипт, а также увеличивает переменную окружения.

Я попробовал это, и это работает, если я вызываю test.sh из терминала.

# test.sh
JOB_COUNTER=$((JOB_COUNTER + 1))
echo $JOB_COUNTER
export JOB_COUNTER=$JOB_COUNTER

Если я добавлю call изнутри crontab , $JOB_COUNTER , похоже, не увеличится (я проверяю это с помощью echo $JOB_COUNTER)

Контекст: я хочу добавлять 50 новых заданий в наш кластер каждые два часа, потому что, если бы я отправлял все задания вместе, планировщик запускает слишком много заданий параллельно и в большинстве случаев из-за медленного ввода-вывода. Если cronjob не то, что можно использовать, я открыт для других идей.

1 ответ1

0

Каждый test.sh, вызываемый cron, является новым процессом, поэтому переменные окружения удаляются.

Пытаться

# test.sh
JOB_COUNTER=$(< $HOME/jobcounter.txt )
JOB_COUNTER=$((JOB_COUNTER + 1))
echo $JOB_COUNTER > $HOME/jobcounter.txt
echo $JOB_COUNTER
# JOB_COUNTER can be used here 

имейте в виду, что вы не можете использовать JOB_COUNTER при вызове оболочки, если только нет test.sh ( . ./test.sh )

вам придется инициализировать и сбросить $HOME/jobcounter.txt

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .