Тройная команда сокращает строки?

У меня есть такой код:

54 08 * * * /usr/local/bin/curator --dry-run --config /home/itadmin/.curator/curator.yml /home/itadmin/.curator/daily.yml 2>&1 | /usr/bin/tee -a /home/itadmin/.curator/logs.txt | /usr/bin/tee /home/itadmin/.curator/history.txt | if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then  mail -s 'Snapshot Status' xyz@abc.com; fi

Что я делаю, так это отправляю вывод cron в logs.txt для истории и отправляю его в history.txt, в котором будет работать условие if.

На самом деле вывод cron такой

2017-05-17 08:33:01,395 INFO      Preparing Action ID: 1, "snapshot"
2017-05-17 08:33:01,404 INFO      Master-only flag detected. Connected to non-master node. Aborting.

Но я попал в logs.txt

2017-05-17 08:54:01,427 INFO      Preparing Action ID: 1, "snapshot"

В файле history.txt я ничего не получил

Но они работали нормально, когда я сделал команду удаления (то естьif [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' xyz@abc.com; fi),

Я не знаю, почему это происходит?

СПАСИБО

1 ответ

Решение

Вы должны разделить свою работу на две команды (как показано ниже), чтобы history.txt закрывается перед началом проверки его размера.

Происходит то, что if оператор просматривает размер файла после того, как он был усечен, но до того, как он был записан. Это означает, что последний компонент конвейера просто завершается, и все, что до этого умирает с SIGPIPE,

54 08 * * * /usr/local/bin/curator --dry-run --config /home/itadmin/.curator/curator.yml /home/itadmin/.curator/daily.yml 2>&1 | /usr/bin/tee -a /home/itadmin/.curator/logs.txt > /home/itadmin/.curator/history.txt; if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' xyz@abc.com < /home/itadmin/.curator/history.txt; fi

Я не знаю способ сделать это без использования промежуточного файла. Ответ на отправку почты из командной строки, если тело не пустое, предлагает использовать ifne утилита для особого случая пустого / непустого ввода.

Другие вопросы по тегам