Переменные среды для cron
При настройке переменных для заданий cron, есть несколько вариантов в зависимости от конкретных требований:
- Объявление переменных непосредственно в файлах crontab
- Объявление переменных как часть командной строки
- Загрузка переменных из файла перед выполнением команды
Объявите переменные прямо crontab
В этом примере мы настраиваем переменную PATH
и пользовательскую переменную приложения APP_ENV
. Когда задание cron запускается, оно будет искать example.sh
в переменной PATH
, когда команда запустится, ее среда будет включать в себя APP_ENV
и PATH
:
APP_ENV=production
PATH=/root/it/scripts
0 0 * * * example.sh
PATH
Когда команда запускается без полного пути, ваша оболочка будет искать команду в местоположениях, указанных в переменной PATH
, можно добавить любое количество местоположений, разделенных двоеточием, поиск по ним будет осуществляться в том порядке, в котором вы их написали:
PATH="/users/dataproc/bin:/var/data-analytics/bin:/root/it/scripts"
MAILTO и MAILFROM
Сron отправляет по электронной почте после завершения работы уведомления. Часто это является раздражающим источником, особенно для часто выполняемых заданий, простой способ запретить cron отправлять электронные письма, установить MAILTO
переменную пустой, или если нужны уведомления указать адрес электронной почты получателя:
MAILTO=""
SHELL
По умолчанию cron использует классическую оболочку dash
по адресу /bin/sh
для вызова ваших команд, можно явно указать cron использовать любую оболочку:
SHELL=/bin/bash
CRON_TZ
Задания cron выполняются в любом часовом поясе, на котором установлены системные часы сервера. Добавив CRON_TZ
в вашем crontab, вы можете контролировать часовой пояс:
CRON_TZ=America/New_York
Переменные как часть команды
Переменные среды могут быть объявлены встроенными. Здесь вы можете увидеть пример, когда два задания получают разные значения для одной и той же переменной:
0 * * * * APP_ENV=production /var/data-analytics/export-to-datalake.py # Every hour
0 0 * * * APP_ENV=staging /var/data-analytics/export-to-datalake.py # Once a day
Загрузка переменных из файла
Можно объявить переменные непосредственно в файле, который можно повторно использовать повсюду. В этом случае файл прописывается непосредственно как часть командной строки. Любые переменные, экспортированные в файл, будут частью среды задания:
0 * * * * source /var/data-analytics/bootstrap.sh ; /var/data-analytics/export-to-datalake.py