LINUX.ORG.RU

Сообщения danqs69

 

Cron для Bash скрипта

Добрый день

Стоит задача запускать bash скрипт через cron

для этого под учетной записью рута, через команду crontab -e была добавлена запись:

* * * * * /etc/cron.d/post1.sh >> /usr/bin/scrpt/test1.log

Сам скрипт при запуске руками прекрасно выполняется и выглядит вот так:

post1.sh
#!/bin/bash
QUE_LEN=$(/opt/zimbra/postfix/sbin/postqueue -p | grep -v "^[^0-9A-Z]\|^$" | wc -l)
if [ $QUE_LEN -gt 1000 ]
then - zimbra -c 'zmmtactl stop'
fi
exit

Скрипт смотрит очередь отправки зимбры и если она больше 1000, он останавливает службу отправки

Но крон не может обработать этот скрипт, я думаю из за того что в команде останавливающей службу прописан не полный путь, но к сожалению, я нигде не нашел как можно обратиться по полному пути к данной службе зимбры, что бы крон обработал скрипт как полагается

После чего мною был придуман костыль, я написал еще один Баш скрипт который скормил крону. Логика такая, в кроне запускается скрипт который запускает нужный скрипт проверки очереди.

Здесь проблема в том что, почему то второй скрипт не хочет запускать нужный, даже если его запустить руками.

Второй скрипт выглядит вот так:

postscript.sh
#!/bin/bash
$SP="/etc/cron.d/post1.sh"
bash "$SP"

При попытке его запуска руками он выдает:

/etc/cron.d/postscript: строка 2: = /etc/cron.d/post1: Нет такого файла или каталога

chmod +x делал, полный путь проверял, все соответствует, запускал с sudo, результат такой же

Сообственно вопрос, коллеги, как сделать что бы крон раз в минуту проверял очередь и если она больше 1000 останавливал модуль отправки

 , ,

danqs69
()

Простой BASH скрипт для остановки почты при увеличении очереди

Приветствую всех

Пишу баш скрипт который проверяет очередь почты в зимбре и если если значение привышает 1000 стопит службу отправки

Для вывода из очереди только цифрового значения был использована вот эта команда:

/opt/zimbra/postfix/sbin/postqueue -p | grep -v "^[^0-9A-Z]\|^$" | wc -l

Согласно моему разумению код скрипта должен выглядеть вот так

#!/bin/bash
if [ /opt/zimbra/postfix/sbin/postqueue -p | grep -v "^[^0-9A-Z]\|^$" | wc -l] -gt '1000'
then 
su - zimbra -c 'zmmtactl stop'
fi

Но это не работает, не могу понять почему

Зы. Сильно не пинайте, до этого программирования почти не касался

 ,

danqs69
()

RSS подписка на новые темы