LINUX.ORG.RU
ФорумAdmin

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

 , ,


0

1

Добрый день

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

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

И где вы искали? В выводе команды whereis смотрели?

Логика такая, в кроне запускается скрипт который запускает нужный скрипт проверки очереди.

Которому опять не хватит PATH...

mky ★★★★★ ()

А если руками запустить, он работает? У тебя какая-то каша вместо команды

then - zimbra -c 'zmmtactl stop'

я нигде не нашел как можно обратиться по полному пути

which zimbra

Логика такая, в кроне запускается скрипт который запускает нужный скрипт проверки очереди.

🤦

Deleted ()

Не считая правильных ответов выше

$SP=

Суслика видим? Символ $ лишний. И вообще зачем так усложнять? Не проше просто прописать /etc/cron.d/post1.sh
Но это конечно лирика. Повторюсь, правильные ответы выше.

anc ★★★★★ ()

SHELL=/bin/bash

в crontab на одну строку выше вызова твоего скрипта

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.