У меня есть проблема в доступе к переменной оболочки в то время как рабочее задание крона. На самом деле я создал задание, которое печатает два значений переменных оболочки в a env.output
файл.
Я пишу команду использования задания крона $ crontab -e
(без sudo пользователя).
Мой crontab конфигурационный файл похож на этот:-
# varibales
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games:/usr/local/games
MAILTO=abc@xyz.com
HOME=/home/ubuntu
JOBS_PATH=${HOME}/cronjobs
# Jobs
* * * * * echo "$HOME and $JOBS_PATH" >> ${HOME}/env.output 2>&1
Так, теперь когда я вижу содержание файла env.output
, я получаю этот вывод
/home/ubuntu and ${HOME}/cronjobs
который не ожидается, я принял.
Я хочу свой вывод, должен быть похожим на этот:-
/home/ubuntu and /home/ubuntu/cronjobs
Предложите меня некоторый способ обработать эту проблему.
у меня есть проблема в доступе к переменной оболочки
HOME
, как определено наверху crontab, не переменная оболочки, переменная среды.
Вы не можете сослаться на переменные среды наверху crontab, поскольку никакая оболочка не обрабатывает их, и таким образом они не расширены (и интерпретированы буквально).
необходимо будет установить JOBS_PATH
вручную:
# ...
JOBS_PATH=/home/ubuntu/cronjobs
# ...
Это - ограничение демона крона. Посмотрите это от страница справочника crontab:
строка значения не проанализирована для экологических замен или замены переменных, таким образом строки как:
PATH = $HOME/bin:$PATH
не будет работать, как Вы могли бы ожидать.
можно сделать обходное решение, так как удар рассматривает тильду (~
) как замена $HOME
. Поэтому используйте:
JOBS_PATH=~/cronjobs