Вывод в реальном времени в скрипте git post-receive

У меня есть несколько удаленных репозиториев (начиная с --bare) на компьютере с Linux Ubuntu (14.04 и 16.04). Эти репозитории получают коммиты, и оттуда события скриптов hooks начинают развертывание приложений. Сценарий, используемый развертыванием, называется после получения.

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

Согласно этому ответу и эта строка, буфер явно выгружается всякий раз, когда скрипт записывает новую строку в вывод.

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

Я уже пробовал:

#!/bin/bash

echo "A - Starting deploy. \n";
echo "A - Starting deploy. \n\r";
echo "A - Starting deploy. \r";
echo -e "A - Starting deploy. \n";
echo -e "A - Starting deploy. \n\r";
echo -e "A - Starting deploy. \r";
printf "A - Starting deploy. \n";
printf "A - Starting deploy. \n\r";
printf "A - Starting deploy. \r";

# Code for deploy ...

echo "B - Finished deploy.";

Но все выходные данные, запущенные как "A", так и "B", отображаются на клиентской консоли только тогда, когда весь скрипт завершается.

Я хотел бы, чтобы каждая строка была представлена ​​клиенту по мере выполнения сценария.

Я считаю, что это возможно, потому что я использую библиотеку s3cmd для загрузки ресурсов AWS S3, и во время загрузки выходные данные показаны в исполнении, а не только в конце, как показано ниже. Также интересно, что написанные мной выходные данные отправляются в ответ и тогда, когда s3cmd начинает отправлять свои выходные данные.

выводы в реальном времени

Кто-нибудь может мне помочь?


person Jean Marcos    schedule 24.09.2017    source источник
comment
похоже на проблему с буферизацией. Это происходит так же, если вы нажимаете из командной строки? Попробуйте добавить эхо-команды с помощью утилиты stdbuf, как описано в ссылке.   -  person max630    schedule 24.09.2017