Нам нужно иметь / usr / local / bin в пути cron для всех пользователей. Есть ли способ установить его в масштабе всей системы, без необходимости редактировать crontab каждого отдельного пользователя?
Мы попытались добавить PATH в / etc / crontab:
# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Но когда у пользователей есть это в их crontab:
$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path
... это показывает, что их путь по-прежнему установлен по умолчанию:
$ cat /tmp/current_cron_path
/usr/bin:/bin
echo
свой cron, возможно, ненадежно .Ответы:
Вы можете настроить PATH в файле конфигурации crontab, как показано в первом коде, за исключением этого . Сначала укажите переменные env, затем укажите задания.
UPD: из-за того, что ссылка не работает, вот выдержка:
источник
sudo crontab -e
)Установка переменной PATH должна работать в Ubuntu, как вы говорите, она не работает?
См. № 14: Linux Crontab: 15 великолепных примеров заданий Cron
источник
Я не мог найти решение для этого либо. Наиболее близким к достойному решению является следующее (взято с https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html ).
SHELL=/path/to/setup/cron.bash
Например:
Недостаток: для этого необходимо указать
SHELL=...
верхнюю часть каждого cronjob. Перевернутая сторона: вы будете использовать обычные переменные окружения, и вам не придется беспокоиться о том, чтобы поддерживать постоянные переменные между cron и другимиисточник
Если вы можете быть пользователем root, можете ли вы попробовать отредактировать
/etc/init.d/cron
и изменить PATH там? Я не проверял это, но было бы интересно проверить.источник