LINUX.ORG.RU

Как в консоли делать flush вывода в файл

 ,


0

0

Приветствую всех! Подскажите пожалуйста, как делать flush в консоли?

Допустим есть ksh-скрипт работающий в старой платформе 20-летней давности, там ksh. Программа в режиме отладки пишет в файл, иногда возникают отладочные сообщения:

./my_debug_script > log.txt

Необходимо делать перодические flush вывода, даже если в консоль выведено мало текста, иначе я так и не дожидаюсь нужных сообщений, лог остается оборванным

Поможет ли fflush(NULL) в самой программе? Еще тупая идея выводить в лог кучу символов типа # чтобы заставить имеющийся вывод попасть в лог-файл

Ответ на: комментарий от izzholtik

Да, всё запущено. sync, про который я знаю, тоже не помогает

Но вот что если я напишу си-шную программу, которая будет как посредник открывать этот скрипт, читать output (который всё же попадает в консоль без промедлений) и писать в файл без промедлений и делать flush?

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от XoFfiCEr

Ежесекундно скрипт выводит стату в консоль, и вот когда перенаправлен вывод в файл, то даже за 5 минут можно не дождаться актуальных данных, но без файла никак

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от XoFfiCEr

flush нужен в python перед close

Перед закрытием файла туда и так буфер смоет, смысл вызывать flush есть только где-то в середине кода

micronekodesu ★★★ ()
Ответ на: комментарий от micronekodesu

в python? нет непосредственно после записи и перед закрытием файлового дескриптора. Иначе выталкивание буферов на диск бессмысленно! в bash не знаю.

XoFfiCEr ★★★★ ()
Ответ на: комментарий от micronekodesu

У мну QNX 4.25 не знаю как отключать буферизацию консоли или файлов

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от Rx0

Это должно запускаться параллельно перенаправленному выводу?

./script > log.txt & tail -f log.txt

I-Love-Microsoft ★★★★★ ()
Ответ на: комментарий от WitcherGeralt

в чем в python?

Есть моя старая тема на cyberforum о том что реально скрипт записывает в текстовый файл без flush а там ничегошеньки. Какой параметр при открытии файла?

XoFfiCEr ★★★★ ()
Ответ на: комментарий от Rx0

Спасибо, это помогло. Действительно, пишу в файл перенаправлением. Но вызвав tail -f на этом файле, оно не только пишет в файл но и выдает новое добавленное. И сам файл вовремя обновляется, не ожидая чего либо

I-Love-Microsoft ★★★★★ ()
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)
Ответ на: комментарий от XoFfiCEr

Если хочешь нормальную производительность, она нужна всегда. Некоторые выключают буферизацию логов (в проде), от такого у меня прямо горит. Это супер бестолково.

WitcherGeralt ★★ ()
Ответ на: комментарий от XoFfiCEr

С токи зрения логики программы запись в лог — это абсолютно бесполезная вещь. Ты действительно хочешь переключать контекст так часто без какого-либо толку? В случае питоном достаточно легко организовать нормальную обработку ошибок и избегать случайных падений, весь твой лог будет в сохранности.

WitcherGeralt ★★ ()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

запись в log файл нужна не самой программе она нужна программисту и всем тем кто будет с этой программой работать. Да я и имел ввиду python и php.

XoFfiCEr ★★★★ ()
Ответ на: комментарий от XoFfiCEr

Пока всё идёт хорошо, логи нафиг не нужны. А если тебе нужны метрики или что-то анализировать, то логи не лучшее решение. Так или иначе заметно просаживать производительность логирование не должно.

WitcherGeralt ★★ ()
Ответ на: комментарий от WitcherGeralt

может быть другая ситуация.

Например python скрипт не нашел в своем каталоге нужных ему для работы файлов. В таком случае может быть только запись в log файл и останов работы скрипта.

XoFfiCEr ★★★★ ()
Ответ на: комментарий от WitcherGeralt

я об использовании log файлов сейчас говорил (на оффтопике они называются журнальными) а не о буфферизации.

XoFfiCEr ★★★★ ()
Ответ на: комментарий от WitcherGeralt

Что мне понимать если я это давно знаю.

Что я в третьем классе чтоб одно и тоже зубрить?

XoFfiCEr ★★★★ ()
Последнее исправление: XoFfiCEr (всего исправлений: 1)
Ограничение на отправку комментариев: только для зарегистрированных пользователей