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

Тройник сокращает строчки?

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

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 (т.е.if [ $(wc -l </home/itadmin/.curator/history.txt) -ge 2 ]; then mail -s 'Snapshot Status' xyz@abc.com; fi) .

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

СПАСИБО

Вам нужно разделить вашу работу на две команды (как показано ниже), чтобы 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 утилита для особого случая пустого / непустого ввода.