如何循环队列检查代码?

如何循环队列检查代码?

可能重复:
当 Postfix 队列为空时断开调制解调器

此脚本代码检查 Postfix 邮件队列是否为空,如果为空则断开我的调制解调器。

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

我需要根据需要运行它多次,直到邮件队列变空。

我怎样才能循环播放它?

也许放置一个别的返回执行脚本的行postqueue -p|grep 为空

我知道它可以很简单,但是我对 Bash 脚本并不是很熟悉,所以我需要帮助来完成这个代码。

答案1

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

答案2

这就是你要找的东西吗?

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

答案3

此代码运行得更好(因为它在大型队列上运行得更快):

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

请注意,这个问题与您的问题重复自己的问题

相关内容