"/usr/bin/env bash" не найден при запуске из скрипта cron

У меня есть это в моем crontab:

PATH=/usr/bin:/usr/local/bin:$PATH
*/1 * * * * /usr/bin/env bash > ~/cron.log 2>&1

Выход в cron.log является следующим:

/usr/bin/env bash: No such file or directory

/usr/bin/env так же как /bin/bash оба существуют. И я также могу запустить эту команду от того же пользователя, которому принадлежит этот crontab без каких-либо ошибок. Я также попытался добавить

SHELL=/bin/bash

на вершину crontab. Нет эффекта. Понятия не имею, что происходит. Также это:

*/1 * * * * which bash > ~/cron.log 2>&1

вообще ничего не показывает в лог-файле. Это все, что у меня есть в моем crontab для этого пользователя, и ничего больше.

3 ответа

Так как ваш сценарий cron работает начинается с #!/usr/bin/env bash ( верно?), все, что вам нужно сделать в вашем crontab является:

*/1 * * * * /path/to/script > ~/cron.log 2>&1

И убедитесь, что скрипт действительно что-то выводит; если ваш сценарий абсолютно тихий, ваш файл журнала будет пустым.

Оказывается, я не должен был иметь эту строку:

PATH=/usr/bin:/usr/local/bin:$PATH

Удаление из crontab решило проблему.

Не уверен, что именно ты пытаешься сделать, но для меня

# which bash
/bin/bash

Так что постарайтесь

/usr/bin/env /bin/bash /path/to/some/script > ~/cron.log 2>&1
Другие вопросы по тегам