powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Выводstdout в файл.
8 сообщений из 8, страница 1 из 1
Выводstdout в файл.
    #36929558
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня.

ОСь FreeBSD 8.1.

Даю задание посчитать размеры директорий. Команда такого вида:
Код: plaintext
cd /path/to/folder ; /usr/bin/du -sm *  1 >/path/to/out.log  2 >/path/to/err.log
Директорий для обхода du много, задание выполняется долго. При старте задания создаются пустые файлы логов, что вполне естественно. Но вот файл out.log остаётся пустым в течении всего времени всего времени выполнения команды du, и только по окончании заполняется результатом работы. Если вывод оставить в консоль, то строчки печатаются по мере обхода директорий.

Собственно, вопросы:
1. Нормально ли такое поведение для фряхи? Если не ошибаюсь, на линуксах stdout в лог пишется сразу, не дожидаясь окончания задания.
2. Можно ли повлиять так, чтоб лог заполнялся по ходу выполнения, и если да, то как?

Заранее благодарю.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36929680
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это должно быть нормально и для линуха, т.к. вывод в файл, в отличии от консоли,
буферизуется. Может, у фри, просто, буфера побольше...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36930065
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю. Действительно, упустил из виду буферизацию. Видимо, и в линуксе недосмотрел подробности.
А можно ли каким то образом ограничить буфер конкретно для одного процесса/команды? Допустим, сделать его построчным. В манах нарыл только setvbuf (3), но это, похоже, совсем не то. Да, задание должно запускаться из крона.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36930085
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эммм... Так вот примерно должно сработать, если по-простому ))
Код: plaintext
rm -f /path/to/out.log ; cd /path/to/folder ; while read d ; do du -sm $d >>/path/to/out.log ; done

Но, если есть простое решение с непосредственным управлением буферизацией, оно тоже интересно. Как минимум, для общего образования ))
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36930317
Андрей Панфилов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vkle,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
$ cat /usr/bin/unbuffer
#!/bin/sh
# \
exec expect -- "$0" ${1+"$@"}
# Description: unbuffer stdout of a program
# Author: Don Libes, NIST

if {[string compare [lindex $argv  0 ] "-p"] ==  0 } {
    # pipeline
    set stty_init "-echo"
    eval spawn -noecho [lrange $argv  1  end]
    interact
} else {
    set stty_init "-opost"
    eval spawn -noecho $argv
    set timeout - 1 
    expect
}
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36932044
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Панфилов,

Спасибо. Попробую разобраться )


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36932191
chAlx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если попробовать какой-нибудь промежуточный пайп вставить?
Код: plaintext
/usr/bin/du -sm * | grep ""  1 >/path/to/out.log
...
Рейтинг: 0 / 0
Выводstdout в файл.
    #36932349
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chAlx,

>А если попробовать какой-нибудь промежуточный пайп вставить?

Да тоже пробовал, бестолку. Сейчас перепроверил. Скажем так, в консоли /usr/bin/du -sm * выводит строка-за-строкой, а /usr/bin/du -sm * | grep "" ожидает завершения du. По крайней мере, в моём случае, когда весь результат помещается килобайт в пять. Так понимаю, что буферизация идёт уже на уровне пайпа. Да, попутно тогда раскопал ещё cat -u (судя по мануалке, ключик -u для вывода без буферизации), но это тоже не мой случай, некуда прикрутить.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Выводstdout в файл.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]