Crontab нет ошибки, но не выполняет сценарий - PullRequest
2 голосов
/ 12 января 2010

Я пытаюсь выполнить скрипт оболочки из cron на Freebsd.

Чтобы проверить, работает ли crontab, я написал строку

  * * * * * echo "Hello" > /home/myuser/logile  

и она работаетхорошо.

Но при попытке выполнить любой скрипт он ничего не делает, даже не выдает ошибку.(В сценарии, который я пытался запустить, используется та же команда echo) Ниже приведен вывод crontab -l:

SHELL=/bin/sh  
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin  
HOME=/home/myuser  
MAILTO=myuser  
* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile  

Почему сценарий не выполняется, хотя crontab явно выполняется?Разрешение для всех файлов установлено на rwxr-xr-x.

Ответы [ 6 ]

3 голосов
/ 07 декабря 2011

Вы проверили, что в командной строке есть перевод строки / CR в конце строки? Я часами пытался найти причину невыполнения php-скрипта на cron, когда я просто не нажимал enter в конце строки, когда редактировал задания cron с помощью crontab -e: -)

2 голосов
/ 16 ноября 2010
* * * * * /bin/sh /home/myuser/shellscript.sh

или

* * * * * /bin/bash /home/myuser/shellscript.sh

работал у меня в Macosx 10.6 как rootuser

2 голосов
/ 19 марта 2010

Вы проверяли /var/log/cron на наличие улик?

1 голос
/ 18 марта 2010

cron отправляет любые ошибки по электронной почте владельцу файла crontab (часто «root», чтобы вы могли проверить электронную почту этой учетной записи).Чтобы все ошибки отправлялись по почте на «crontabOnFreebsd», поместите:

MAILTO=crontabOnFreebsd

в ваш crontab (около верха).

Для получения дополнительной информации введите эту команду:

man 5 crontab
1 голос
/ 12 января 2010

Вы пробовали

* * * * * /bin/sh /home/myuser/shellscript.sh > /home/myuser/logfile 
0 голосов
/ 12 января 2010

Если вы получаете сообщение об ошибке, ваш лог-файл может не захватить его, попробуйте это:

* * * * * /home/myuser/shellscript.sh > /home/myuser/logfile 2> /home/myuser/errorfile

Прошло много времени с тех пор, как я делал какие-то вещи cron; но вещи, которые всегда получали меня:

  1. Переменные окружения не были установлены: обычно я считал необходимым установить полный путь (даже к таким вещам, как 'cat') для всех команд [или хотя бы установить переменные ENV в самом скрипте].

  2. Убедитесь, что пользователь, которому принадлежит сценарий и т. Д., Действительно является пользователем, который запускает сценарий: это может быть не тот же пользователь, когда вы тестируете из интерактивной оболочки. То же самое касается каталогов / файлов, в которые может записываться скрипт.

  3. Также: проверьте электронную почту для пользователя root - вы можете обнаружить, что ошибки были перенаправлены в папку «Входящие», что может помочь вам устранить эту проблему в дальнейшем.

...