Назад | Перейти на главную страницу

Как зациклить код проверки очереди?

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

Этот код сценария проверяет, пуста ли почтовая очередь postfix, и если это правда, он отключает мой модем.

#!/bin/sh
postqueue -p|grep empty
if [ $? -eq 0 ]; then
  killall wvdial
fi

Мне нужно запускать его столько раз, сколько нужно, пока почтовая очередь не опустеет.

Как я могу его зациклить?

Возможно размещение еще который возвращается для выполнения скрипта из строки postqueue -p | grep пусто ?

Я знаю, что это может быть просто, но я не слишком разбираюсь в сценариях bash, поэтому мне нужна помощь, чтобы завершить этот код.

#!/bin/bash
while ! postqueue -p | grep -q empty; do
    sleep 1
done
killall wvdial

Это то, что вы ищете?

while postqueue -p | grep -q empty; do
    killall wvdial
    sleep 1
done

Этот код работает даже лучше (так как он быстрее в больших очередях):

while [ `find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l` -gt 0 ]; do
    sleep 5
done
killall wvdial

И обратите внимание, что этот вопрос является дубликатом вашего собственный вопрос.