добавьте “проверку, если fetchmail работает” к этому сценарию

Можно использовать этот режим в любой программе, которая пользуется readline библиотекой путем добавления set editing-mode vi кому: ~/.inputrc.

Можно также использовать rlwrap заставить другие программы использовать readline.

2
12.11.2011, 00:19
2 ответа
echo "Checking mail queue and fetchmail process"
while ! postqueue -p | grep -q empty && ps -C fetchmail > /dev/null; do
  echo "There is still mail in queue or fetchmail is still working"
  sleep 1
done
echo "Terminating the connection"
killall wvdial
2
27.01.2020, 22:07
  • 1
    Да, и у меня есть больше вопросов все еще в очереди... ;) –  nerdhacker 12.11.2011, 00:23
while [ "`find /var/spool/postfix/{deferred,active,maildrop}/ -type f | wc -l`" -gt 0 ] ||
      [ "`ps -C fetchmail -o pid= | wc -l`" -gt 0 ]; do
    sleep 5
done
killall wvdial

или даже с меньшим количеством порожденных процессов:

while [ -n $("find /var/spool/postfix/{deferred,active,maildrop}/ -type f") ] ||
      [ -n $("ps -C fetchmail -o pid=") ]; do
    sleep 5
done
killall wvdial
1
27.01.2020, 22:07
  • 1
    [ "`somecommand | wc -l`" -gt 0 ] ужасно косвенный способ проверить на пустой вывод. [ -n "$(somecommand)" ] прямой путь. Можно добиться большего успеха, хотя, см. ответ nerdhacker. Кроме того, необходимо тестировать постфикс и fetchmail одновременно, а не никогда не тестировать постфикс, после того как Вы начали тестировать на fetchmail (существует все еще состояние состязания, но окно намного меньше). О, и всегда помещаемые двойные кавычки вокруг замен. То, что Вы думаете, произошло бы, если бы вывод содержал пробел (как, несколько строк)? –  Gilles 'SO- stop being evil' 12.11.2011, 00:17
  • 2
    @mailq я исправил то, что было объективно неправильным. Я оставлю корректный-но-субоптимальный материал до Вас. –  Gilles 'SO- stop being evil' 12.11.2011, 00:45

Теги

Похожие вопросы