Я хочу перебрать список скриптов bash с заданием cron. Т.е. каждые два часа я хочу запустить еще один скрипт bash. Моя идея состояла в том, чтобы установить новую переменную окружения, каждый раз, когда скрипт cronjob читает эту переменную окружения и вызывает соответствующий скрипт, а также увеличивает переменную окружения.
Я попробовал это, и это работает, если я звоню test.sh
из терминала.
# test.sh
JOB_COUNTER=$((JOB_COUNTER + 1))
echo $JOB_COUNTER
export JOB_COUNTER=$JOB_COUNTER
Если я положу вызов изнутри crontab
, $JOB_COUNTER
кажется, не увеличивается (я проверяю это с echo $JOB_COUNTER
)
Контекст: я хочу добавлять 50 новых заданий в наш кластер каждые два часа, потому что, если бы я отправлял все задания вместе, планировщик запускает слишком много заданий параллельно и в большинстве случаев из-за слишком медленного ввода-вывода. Если cronjob - это не то, что можно использовать, я открыт для других идей.
Ответы:
Каждый test.sh, вызываемый cron, является новым процессом, поэтому переменные окружения удаляются.
Пытаться
имейте в виду, что вы не можете использовать JOB_COUNTER при вызове оболочки, если только нет test.sh (
. ./test.sh
)вам придется инициализировать и сбросить
$HOME/jobcounter.txt
источник