Можно или продвинуть его через WSUS, или Вы испытываете необходимость для загрузки его с MS (предпочтительный для центральной доли программного обеспечения, таким образом, только необходимо загрузить однажды), и продвиньте его через GPO/SCCM/some другое решение для установки. или вручную установите его.
Можно явно установить опции буферизации стандартных потоков с помощью a setvbuf
звоните в C (см. эту ссылку), но при попытке изменить поведение существующей попытки программы stdbuf
(часть coreutils
запуск с версии 7.5, по-видимому).
Это буферизует stdout
до строки:
stdbuf -oL command > output
Это отключает stdout
буферизация в целом:
stdbuf -o0 command > output
попробуйте script
команда; если Ваша система имеет его, это берет имя файла в качестве аргумента, весь текст, выведенный к stdout, копируется в файл. Очень полезно, когда программа установки требует взаимодействия.
Лично я предпочитаю передавать вывод по каналу команды, которую я хочу исследовать через tee
.
script
записи слишком много информации, включая синхронизацию нажатий клавиш и много непечатаемых символов. Что tee
сохраняет намного более человекочитаемо для меня.
Перенаправьте вывод в файл и следуйте за файлом с tail -f
команда.
Править
Если это все еще страдает от буферизации, то используйте средство системного журнала (который обычно освобождается буфер). Если пакетная обработка работает как сценарий оболочки, можно использовать команду регистратора, чтобы сделать это. Если выполнения пакетного задания в языке сценариев, должно быть регистрирующееся средство так или иначе.
В Ubuntu программа unbuffer
(из пакета expect-dev
) помогла мне. Просто запустите:
unbuffer your_command
, и он не буферизует его.
Вы можете добиться вывода строчной буферизации в файл, используя команду script
, например:
stty -echo -onlcr # avoid added \r in output
script -q /dev/null batch_process | tee output.log # Mac OS X, FreeBSD
script -q -c "batch_process" /dev/null | tee output.log # Linux
stty echo onlcr
Вы можете использовать команду tee
, просто волшебство!
someCommand | tee logFile.log
будет как отображаться в консоли, так и записываться в файл журнала.
Самое простое решение, которое я нашел (не требовалось устанавливать какие-либо сторонние пакеты), было упомянуто в аналогичной ветке на сайте Unix и Linux : используйте сценарий
команда. Он старый и, вероятно, уже установлен.
$ script -q /dev/null long_running_command | print_progress # FreeBSD, Mac OS X
$ script -q -c "long_running_command" /dev/null | print_progress # Linux
Обратите внимание, что первый параметр имени файла для команды script
- это файл журнала, который будет записан . Если вы просто запустите скрипт -q ваша_команда
, вы перезапишете команду, которую вы сделали для запуска, с файлом журнала. На всякий случай проверьте скрипт man
, прежде чем пробовать его.