(Контекст: я пытаюсь отслеживать длительный процесс из сценария Perl CGI. Он выполняет резервное копирование базы данных MSSQL, а затем 7-архивирует ее. Пока что часть резервного копирования (используя WITH STATS=1
) выводит в файл, который я могу просмотреть в браузере, обновляя его каждые несколько секунд, и он работает.)
Я пытаюсь использовать утилиту командной строки 7zip, но записываю индикатор выполнения в файл. К сожалению, в отличие от резервных копий SQL, где каждый раз, когда выполняется еще один процент, он выводит еще одну строку, 7zip перематывает свои выходные данные перед выводом новых данных о ходе выполнения , так что это выглядит лучше, если вы просто используете его обычно на командная строка. Причина, по которой это вызывает сожаление, заключается в том, что обычные перенаправления с использованием >
, 1>
и 2>
создают только пустой файл, и в нем никогда не появляется никакого вывода, за исключением >
, который не выводится до тех пор, пока не выполнится задание. готово, что не очень полезно для индикатора выполнения.
Как я могу захватить этот вид вывода, либо добавив каждое изменение в% каким-либо образом к лог-файлу (чтобы я мог использовать свой существующий метод мониторинга лог-файла), просто используя хитрость командной строки (без Perl), либо использование некоторого кода Perl для захвата его непосредственно после вызова system()
?