Tee.exe - дублирование консольного вывода в текстовый файл

Здесь обсуждаются темы, косвенно связанные с Far.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Продублировать консольный вывод в текстовый файл

Post by Max Rusov »

Latest post of the previous page:

Это вопрос или ответ на вопрос?
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Продублировать консольный вывод в текстовый файл

Post by Centaur »

В правильных реализациях tee — вывод на stdout уходит сразу, как только пришёл с stdin.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Re: Продублировать консольный вывод в текстовый файл

Post by ccaid »

это утверждение, что tee не решает проблему, а если поведение tee — искомое, то вместо tee можно использовать вышеприведенный фрагмент.
короче, tee — не нужна.
или я что-то не понял? (это вопрос)
Фар делают добрые люди
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Продублировать консольный вывод в текстовый файл

Post by Max Rusov »

Ну, вам уже ответили. В случае:
build.bat | tee build.log
Вывод в консоль идет без задержки, параллельно выводу в лог. Мне так и нужно было.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Re: Продублировать консольный вывод в текстовый файл

Post by ccaid »

ага. с батником работает, но с дискретностью вызовов программ внутри батника. так что ваша проблема действительно решается. а мне нужно было, чтобы вывод одной программы выводился в процессе, а не в конце.
пробовал две реализации. или ограничения винды, или не нашел Самую Правильную Реализацию.
Фар делают добрые люди
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Продублировать консольный вывод в текстовый файл

Post by Max Rusov »

Не уверен, что правильно понял фразу:
ccaid wrote:с дискретностью вызовов программ внутри батника
но, замечу, что когда я вызываю компилятор, то его вывод (ворнинги и пр.) появляются сразу, а не по окончании процесса компиляции.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Продублировать консольный вывод в текстовый файл

Post by John Doe »

ccaid
Попробовал dir /s | tee dirs.txt, и убедился что вывод происходит параллельно, а вовсе не в конце.
Даже если dir.cmd батник.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Re: Продублировать консольный вывод в текстовый файл

Post by ccaid »

ок, уточнил происходящее. дискретность вывода походу определяется размером буфера stdout. и вывод компилятора с кучей ворнингов, и вывод dir'а — информация выводится быстро и помногу, буфер быстро наполняется, и вывод на экран (и в файл) тут же происходит. а я бьюсь с противоположной ситуацией. считаются контрольные суммы объемистых файлов (исошки) — одна строчка в несколько минут. когда-то буфер наполнится… быстрее весь процесс завершится.
Фар делают добрые люди
User avatar
Centaur
Posts: 1083
Joined: Tue 05 Apr, 2005 20:09
Location: Novosibirsk, Russia
Been thanked: 2 times

Re: Продублировать консольный вывод в текстовый файл

Post by Centaur »

По идее, когда стандартный вывод направлен на консоль или в конвейер, сишный рантайм должен сбрасывать буфер в конце каждой строки. В других языках может понадобиться дёргать flush ручками.
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Продублировать консольный вывод в текстовый файл

Post by John Doe »

Есть ещё одна реализация tee, официальный сайт похоже недавно сдох.
Attachments
tee32.zip
(19.02 KiB) Downloaded 270 times
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Продублировать консольный вывод в текстовый файл

Post by John Doe »

tee из ReactOS
Attachments
tee_ReactOS.zip
(7.99 KiB) Downloaded 250 times
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Re: Продублировать консольный вывод в текстовый файл

Post by ccaid »

чайный хит-парад (предположительный размер буфера):

Code: Select all

tee32          3629
UnxUtils tee   4096
GNU tee        4147
mtee           4147
ReactOS tee    4147
PowerShell tee 8202
в папке с 125 файлами общим размером 860 611 158 байт запускалась команда: fsum * | <some_tee> t.log
дожидался первой паузы в выводе и жал CtrlC. размер файла t.log фиксировался в таблице хит-парада.
устойчивость результата проверял несколькими запусками (и подряд, и не подряд, и на другом наборе файлов)
а дело было под W7HB x64
Фар делают добрые люди
User avatar
John Doe
Бюрократ
Posts: 13862
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 74 times
Been thanked: 428 times
Contact:

Re: Продублировать консольный вывод в текстовый файл

Post by John Doe »

http://david.tribble.com/programs.html: tee.exe

Code: Select all

Options:
...
    -n      Flush output after newlines.
Max Rusov
Posts: 3651
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 2 times
Been thanked: 19 times

Re: Продублировать консольный вывод в текстовый файл

Post by Max Rusov »

ccaid wrote:чайный хит-парад
Чай - это tea. А tee - это T-коннектор, разветвитель.
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Re: Продублировать консольный вывод в текстовый файл

Post by ccaid »

John Doe wrote:http://david.tribble.com/programs.html: tee.exe
-n Flush output after newlines.
«здесь это не работает» — 4096 без -n и плавающее значение ~4149-4168 с -n

Max Rusov
лучше — тройник.
называется: игра слов :wink:
Фар делают добрые люди
User avatar
SlashNet
Posts: 638
Joined: Fri 20 Mar, 2009 09:43
Location: Львов
Has thanked: 16 times
Been thanked: 16 times

Re: Продублировать консольный вывод в текстовый файл

Post by SlashNet »

Кто сказал что "tee" - не "чай".
Китайцы думают . :)
ədиw wo⊥є ʚ o⊥ʎнdəʚədəu əɔʚ
Post Reply

Return to “Операционные системы, командные оболочки и прочее”