Добрый день
Стоит задача запускать 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 останавливал модуль отправки