/usr/bin/envа также /bin/bashоба существуют. И я также могу запустить эту команду от того же пользователя, которому принадлежит этот crontab без каких-либо ошибок. Я также попытался добавить
SHELL=/bin/bash
на вершину crontab. Нет эффекта. Понятия не имею, что происходит. Также это:
*/1 * * * * which bash > ~/cron.log 2>&1
вообще ничего не показывает в лог-файле. Это все, что у меня есть в моем crontab для этого пользователя, и ничего больше.
Является ли это опечаткой, в вашем последнем примере, она не должна читать `\`, который bash \ ``, вместо того, который 'какой bash`?
BenjiWiebe 11 лет назад
0
3 ответа на вопрос
4
BenjiWiebe
Поскольку ваш скрипт cronзапускается с #!/usr/bin/env bash( верно? ), Все, что вам нужно сделать, crontabэто:
*/1 * * * * /path/to/script > ~/cron.log 2>&1
И убедитесь, что скрипт действительно что-то выводит; если ваш сценарий абсолютно тихий, ваш файл журнала будет пустым.
Мне пришлось добавить `PATH =" / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games: / usr / local / games " `а также. Я должен был войти на сервер как root (не sudo), чтобы выяснить, какой корневой путь был по умолчанию. Очевидно, что cron слишком туп, чтобы использовать профиль пользователя по умолчанию
chovy 8 лет назад
0
1
snitko
Оказывается, я не должен был иметь эту строку:
PATH=/usr/bin:/usr/local/bin:$PATH
Удаление из crontab решило проблему.
Сочетание твоего и @ benjiwiebe решило мою проблему. Крон действительно слишком глуп, чтобы что-либо знать. Его путь по умолчанию в основном 2 каталога.
chovy 8 лет назад
0
-3
Stephan
Не уверен, что именно ты пытаешься сделать, но для меня
Один из сценариев, которые я запускаю с помощью cron (`rvm-exec`), имеет в верхней части` #! / Usr / bin / env bash`, и я не могу его изменить, потому что он ломает все. Я понял, что проблема в данном конкретном случае связана с cron, а не с rvm, поскольку cron даже не знает, где находится bash.
snitko 11 лет назад
0
Это полностью отрицает цель использования `/ usr / bin / env / bin / bash`; `/ usr / bin / env` ищет в PATH` bash`; вы используете `/ usr / bin / env`, чтобы найти` bash`, когда вы не уверены, где находится `bash`.
BenjiWiebe 11 лет назад
3
просто позвоните bash на вершине crontab
chovy 8 лет назад
0