скрипт в cron

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС.

Модератор: SLEDopit

Ответить
prosto_gari
Сообщения: 6
ОС: debian

скрипт в cron

Сообщение prosto_gari »

Всем доброго дня, господа!
Прошу строго не судить, с linux только знакомлюсь. На сервере с Ubuntu 14.04.5 требуется запустить скрипт с помощью cron, но тут возникает ошибка (CRON) info (No MTA installed, discarding output).Гугл не помог , перебрал массу вариантов не знаю что еще делать. Вот самскрипт

Код: Выделить всё

#!/bin/sh
/usr/bin/head -n 22 /home/appliance/zrc_sh/expect_log | /usr/bin/tail -n1|/usr/bin/tee /home/appliance/zrc_sh/expect_log1 # & cat /dev/null >$
b="$(cat /home/appliance/zrc_sh/log)"
a="$(cat /home/appliance/zrc_sh/expect_log1)"
if [ "$a" = "$b" ]
then /bin/echo > instd & /bin/echo > expect_log1 & /bin/echo > expect_log
else /bin/echo "$a" > instd &  /bin/echo "$a" > log & /bin/echo > expect_log1 & /bin/echo > expect_log
fi

Файлу были присвоены 744, пробовал и 777, задание записывалось в пользовательский крон методом cron файл_с_заданием.
Так же из консоли скрипт корректо отрабатывает действия.
Просьба, помочь в нелегкой битве.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

prosto_gari писал(а):
24.04.2017 14:10
ошибка (CRON) info (No MTA installed, discarding output)

Это не ошибка, а информационное сообщение. cron обычно отправляет вывод скрипта на почту пользователю, но поскольку у Вас не установлен MTA, он этого сделать не может, о чём и говорит. Установите, например, exim4, и всё исправится.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
prosto_gari
Сообщения: 6
ОС: debian

Re: скрипт в cron

Сообщение prosto_gari »

Может быть есть другие варианты решения? За данный сервер ответственнен другой сотрудник и он очень критично относится с лишнему ПО на сервере. По советам из гугла пробовал перенаправлять вывов в > /dev/null, но результата никакого. При этом простейшие задания типа echo test > test выполняются.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

prosto_gari писал(а):
24.04.2017 14:59
Может быть есть другие варианты решения?

Ничего не делать. Это не ошибка.

prosto_gari писал(а):
24.04.2017 14:59
По советам из гугла пробовал перенаправлять вывов в > /dev/null

stderr тоже перенаправьте тогда уж.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
prosto_gari
Сообщения: 6
ОС: debian

Re: скрипт в cron

Сообщение prosto_gari »

Скажите,пожалуйста, если не сложно, почему простые задания выполняются, а этот скрипт и и еще один появляется это сообщение в логе и они не выполняюся?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

А он разве не выполняется? Судя по тому, что перенаправление stdout не избавляет от ругани, скрипт что-то пытается сказать в stderr. Там и следует искать сообщение об ошибке. Если при ручном запуске скрипта ошибок нет, перенаправьте вывод в файл. Не видя сообщения, могу только погадать, что не находит cat (надо заменить на /bin/cat).
Полагаю, "простые" задания просто ничего не выводят, потому и ругани нет. Собственно, для задач cron это в порядке вещей, так что рекомендую заменить |/usr/bin/tee на >.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
prosto_gari
Сообщения: 6
ОС: debian

Re: скрипт в cron

Сообщение prosto_gari »

к сожалению да, он не выполнятся. Последовав вашему совету заменил команду на вывод ">" и сообщения в сислоге прекратились, то есть ошибок нет, но скрипт так и не выполняется. Помогите разобраться , очень нужен этот скрипт.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

Скрипт выполняется. Если он не делает того, что Вам нужно, то объясните, что же Вам нужно. Из скрипта это не очевидно.
И вообще, если откровенно, скрипт ужасен. Напрягает обилие операторов & ­— Вы точно понимаете, что он делает? Может Вы его перепутали с &&?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
prosto_gari
Сообщения: 6
ОС: debian

Re: скрипт в cron

Сообщение prosto_gari »

извиняюсь за такой скрипт, только учусь) в общем есть GSM шлюз addpac c которого получается список входящих смс и пишется в expect_log, мне необходимо из файла expect_log выбрать строку 21, и сверить со строкой из файла log, если строки совпадают то необходимо очистить файл expect_log, если не совпадают то записать новое значение в 2 файла (log, insms) и очистить файл expect_log. То есть нужно сравнить строку из 2-х файлов и принять решение о перезаписи, если я правильно понимаю, посоветуйте как это можно решить?
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

prosto_gari писал(а):
25.04.2017 12:59
изиняюсь за тако необходимо из файла expect_log выбрать строку

Понятнее не стало.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
prosto_gari
Сообщения: 6
ОС: debian

Re: скрипт в cron

Сообщение prosto_gari »

случайно страницу обновил, сохранила такой ответ)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20752
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: скрипт в cron

Сообщение Bizdelnick »

prosto_gari писал(а):
25.04.2017 12:59
мне необходимо из файла expect_log выбрать строку 21

А берёте 22. Вообще чем городить конвейер с head и tail, проще использовать sed: sed -n 21p /home/appliance/zrc_sh/expect_log. И использовать временный файл никакой необходимости нет, лучше сразу сохранить строку в переменной:

Код: Выделить всё

a=$( /bin/sed -n 21p /home/appliance/zrc_sh/expect_log )
Ну и да, & у Вас там явно не к месту используется.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Ответить