
Я запускаю простой скрипт оболочки, который отлично работает в оболочке входа из cron
, где он не запускается. По какой-то причине /usr/local/bin
не находится в пути пользователя при запуске из , cron
хотя находится при запуске в оболочке.
Где среда для cron
определения?
решение1
Как правило, из среды без входа в систему, установленной для /bin/sh
, которая по умолчанию используется для запуска команды.
В большинстве версий вы можете задать дополнительные переменные окружения в файле crontab, а именно:
PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever
Проверьте crontab(5)
подробности;man 5 crontab
решение2
Проверьте, какую оболочку использует ваш скрипт.
Оболочка и переменные для crontab указаны в /etc/crontab
x@x:~$ cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Файл профиля, используемый sh, находится в домашнем каталоге пользователя.
x@x:~$ ls ~/.profile
/home/x/.profile
Вы можете добавить переменную PATH в конец этого файла (убедитесь, что вы добавляете ее в файл профиля нужного пользователя)
PATH="$PATH:/usr/local/bin"
или вы можете добавить ту же строку в свой собственный скрипт.