Задать вопрос

Почему не выполняется sh скрипт?

Приветствую! Не могу понять, почему не выполняется sh скрипт...
Стоит скрипт в crontab с параметрами:
*/1 * * * * /root/astrachecker.sh > checkerlogs.log


Сам скрипт:
nc -vz 127.0.0.1 8080
if [ $? -eq 0 ]; then
    echo OK
else
    echo FAIL
    perl pushmsg.pl
    /usr/bin/astra --relay -l ip -p 8080 --log /var/log/astra/astra.log
fi

В исходном файле checkerlogs.log ничего нет (пусто), хотя сам скрипт вроде как запускается через crontab.
Лог, выдранный с /var/log/syslog
May 25 18:32:01 d1 CRON[1443]: (root) CMD (/root/astrachecker.sh > checkerlogs.log)


Что я делаю не так? Хотел бы узнать ваше мнение по этому поводу. Заранее всем спасибо!
  • Вопрос задан
  • 1802 просмотра
Подписаться 1 Средний 1 комментарий
Решения вопроса 1
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Ну, первое.
Шебанг - обязателен! Давно-давно уже все скрипты без шебанга вполне могут быть выполнены не там, не так или вообще не выполнены.
Второе.
PATH в начале скрипта - обязателен. Не стоит полагаться на умолчания, где-то чем-то установленные - они могут оказаться совсем не такими, как Вы думаете.
Третье.
Для подстраховки у каждой команды нужно указывать путь. То есть не "nc" , а "/usr/bin/nc" (ну или где он там у Вас лежит)
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@AVKor
google://cron + path
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
*/1 * * * * /root/astrachecker.sh >& checkerlogs.log

Чтобы ошибки тоже попали в лог.
Ответ написан
@Reshh4rd
Всегда проблемы с кроном упирались в :
1)Необходимость прописывать полный путь до программ/скриптов, т.к как ещё системе понять, что откуда запускать
2)PATH, попробуй в PATH прописать полный путь перла:
В командной строке:
PATH=$PATH:/usr/bin/perl ##(это как пример, не знаю, где у Вас перл лежит)
export PATH

P.S.
Посмотреть путь, где лежит perl :
which perl

P.S.2:

И да, через командную строку всё корректно отрабатывает?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы