Как сохранить в файл вывод терминала?

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модераторы: broom, Bizdelnick

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 13:36

Доброго времени суток!
На форуме часто приводят фрагменты вывода консоли. Сомневаюсь, что это переписывается вручную с экрана. Где существует лог вывода консоли или если такого нет, то как его создать?
Спасибо!
Спасибо сказали:

Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Как сохранить в файл вывод терминала?

Сообщение uptime » 12.12.2007 13:41

Если вывод в (графическую) консоль не очень объёмный, можно просто выдельть мышкой кусок и вставить его в сообщение щелчком средней кнопки.
В противном случае можно использовать перенаправление вывода в файл через "воронку", например так:

Код: Выделить всё

some_command parameters > logfile.txt


успехов
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 13:55

Вариант с мышкой не годится, работаю в обыкновенной текстовой консоли без мыши.
Вариант с перенаправлением вывода (как вы назвали "воронкой") тоже не годится. Перенапрвить таким образом вывод можно для одной команды и только вывод команды, а хотелось бы иметь полный лог как на экране консоли, так и в файле один в один.

Или вопрос по-другому: как вставить фрагмент из консоли на форум как это делают отвечающие здесь специалисты?
Спасибо!
Спасибо сказали:

allez
Сообщения: 2221
Статус: Не очень злой админ :-)
ОС: SuSE, CentOS, FreeBSD, Windows

Re: Как сохранить в файл вывод терминала?

Сообщение allez » 12.12.2007 14:30

Или вопрос по-другому: как вставить фрагмент из консоли на форум как это делают отвечающие здесь специалисты?

На этот вопрос вам уже ответил uptime. Я лично больше пользуюсь мышью и крайне редко - перенаправлением вывода в файл, так как в подавляющем большинстве случаев цитирую не более нескольких строк вывода.
Спасибо сказали:

Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Как сохранить в файл вывод терминала?

Сообщение uptime » 12.12.2007 15:01

MagTux, думаю, можно извратиться и настроить полное логирование консоли. Сам не проверял, но должно сработать. Попробуйте запустить копию оболочки (bash) с перенаправлением вывода в файл через команду tee.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 15:09

Да, действительно uptime ответил на вопрос. С вашего позволения я его уточню.

Как сохранить в файл вывод нескольких введённых команд вместе с самими командами и строками приглашения (иными словами вывод консоли; перенаправление сохраняет только вывод команды) работая в текстовой консоли без мыши?

Добавлено:
uptime
Спасибо, попробую.

Добавлено:
uptime
Попробовал.
tee - это то же самое перенаправление вывода, только дублирующее (выводит на стандартный вывод и в файл одновременно).
Буду думать дальше.
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 16:05

Нашёл решение.

Команда

$ setterm -dump

создает "слепок" буфера текущей виртуальной консоли в виде простого текстового файла с именем по умолчанию - screen.dump. В качестве ее аргумента можно использовать номер консоли, для которой требуется сделать дамп. А добавление опции -file имя_файла перенаправит этот дамп в файл с указанным именем. Опция же -append присоединит новый дамп к уже существующему файлу - "умолчальному" screen.dump или поименованному опцией -file.


Т.е. после использования команды, например

Код: Выделить всё

$ setterm -dump -file /root/screenlog

соответственно в файле /root/screenlog будет содержимое одной страницы консоли. Как сохранить весь буфер прокрутки пока не нашёл.
Спасибо сказали:

Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Как сохранить в файл вывод терминала?

Сообщение uptime » 12.12.2007 16:52

Ну, вы отпишитесь по результатам, пожалуйста.
По моим ощущениям буфер консоли гораздо больше, чем то, что мы видим на экране..
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 17:00

Нашёл еще одно решение для копирования/вставки текста в текстовой консоли без мыши. Также можно копировать текст из буфера прокрутки (т.е. всё что на экране и выше за экраном). Чтобы лучше разобраться, читайте о консольном менеджере окон screen. Также может пригодиться увеличить размер буфера прокрутки.

1) Запускаем screen

Код: Выделить всё

$ screen

2) Нажимаем Enter. Всё. Мы находимся в нулевом окне консоли.
3) Выполняем нужные команды, вывод которых необходимо скопировать.
4) Ctrl+A, Ctrl+[ - мы в режиме копирования. Ставим курсор на начало выделения, жмём пробел, потом ставим курсор на конец выделения, жмём пробел. Текст скопирован в буфер.
5) Ctrl+A, с - мы создали новое 1-е окно.
6) Ctrl+A, 1 - мы перешли на 1-е окно.
7) Открываем любой (?) текстовый редактор (я пробовал в mc), и жмём Ctrl+A, Ctrl+] - текст вставлен. Сохраняем.
8) Ctrl+A, Ctrl+0 - вернуться обратно в нулевое окно.

Как увеличить буфер обратной прокрутки?

Первым решением будет увеличить дефолтный (умолчальный) размер буфера в исходниках ядра и перекомпилировать его. Позвольте предположить, что вы столь же не склонны заниматься этим, как и я, и поискать средство более гибкое.

И такое средство есть, а называется оно 'framebuffer console', для краткости 'fbcon'. Это устройство имеет файл документации 'fbcon.txt'; если вы устанавливали документацию к ядру, то он у вас есть. Выискивайте его где-то в районе '/usr/share' ветви (я не могу указать точный путь из-за разницы в дистрибутивах).

На этом месте прошу прощения: мы должны сделать небольшое отступление и немного поговорить о видеобуфере (framebuffer).

Видеобуфер - это буфер между дисплеем и видеоадаптером. Его прелесть в том, что им можно манипулировать: он позволяет трюки, которые не прошли бы, будь адаптер связан напрямую с дисплеем.

Один из таких трюков связан с буфером прокрутки; оказывается, вы можете "попросить" видеобуфер выделить больше памяти буферу прокрутки. Достигается это через загрузочные параметры ядра. Сначала вы требуете framebuffer (видеобуфер); Затем запрашиваете больший буфер прокрутки.

Нижеследующий пример касается GRUB, но может быть легко адаптирован к LILO. В файле настройки GRUB - 'menu.lst'- найдите соответствующую ядру строчку, и затем:
Удалите опцию 'vga=xxx', если таковая присутствует.
Добавьте опцию 'video=vesabf' или то, что соответствует вашему "железу".
Добавьте опцию 'fbcon=scrollback:128'.
После этой процедуры, строка параметров ядра должна выглядеть приблизительно так:
'kernel /vmlinuz root=/dev/sdb5 video=radeonfb fbcon=scrollback:128'.

Спрашивается, зачем удалять опцию 'vga=xxx'? Из-за возможных конфликтов с видео-опцией. На своем ATI адаптере, я не могу изменить буфер прокрутки, если 'vga=xxx' присутствует в списке. Возможно в вашем случае это не так. Если вышеперечисленные опции работают - хорошо; но что, если вы хотите увеличить число строк, или установить более мелкий шрифт на экране? Вы всегда делали это при помощи опции 'vga=xxx' - а она-то и исчезла. Не переживайте - то же самое может быть достигнуто изменением параметров fbcon, как описано в файле 'fbcon.txt' (но не описано в данной статье). В Ubuntu и Debian есть более удобный способ: 'dpkg-reconfigure console-setup'. Эту команду стоит использовать также и потому, что она еще и корректирует 'initrd' на ваши новые настройки.

источник: rus-linux.net


С опцией fbcon=scrollback:128 у меня буфер прокрутки увеличился до 17 экранов (35 раз Shift+PgUp по полэкрана).
Кстати, 128 - это килобайт. Автор статьи утверждает, что больше установить нельзя. Я и не пробовал.
Спасибо сказали:

zh0rzh
Сообщения: 561
Статус: зх0рзх
ОС: Zenwalk, Arch

Re: Как сохранить в файл вывод терминала?

Сообщение zh0rzh » 12.12.2007 17:14

Пожалуйста, прикрепите эту тему.
На себе испытал, как трудно новичку выполнить просьбу спецов:
"команда_такая_то - в студию!"

Добавлено:
и название темы переименуйте, что-то вроде: "Как показать вывод команды в терминале", чтобы понятно было о чём речь.

Спасибо.
Gigabyte GA-8PE800; P-IV 2,66GHz Northwood; NVIDIA GeForce FX 5200; HDD: 160Gb+200Gb.
Спасибо сказали:

Аватара пользователя
broom
Модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: Как сохранить в файл вывод терминала?

Сообщение broom » 12.12.2007 17:27

Можно заюзать script.
Script makes a typescript of everything printed on your terminal. It is useful for students who need a
hardcopy record of an interactive session as proof of an assignment, as the typescript file can be printed
out later with lpr(1).

Делаем

Код: Выделить всё

script filename.log
, когда все нужные команды выполнены - .
Все записано в filename.log
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:

zh0rzh
Сообщения: 561
Статус: зх0рзх
ОС: Zenwalk, Arch

Re: Как сохранить в файл вывод терминала?

Сообщение zh0rzh » 12.12.2007 17:29

А где сам скрипт, broom? :)
Или команда script?
Gigabyte GA-8PE800; P-IV 2,66GHz Northwood; NVIDIA GeForce FX 5200; HDD: 160Gb+200Gb.
Спасибо сказали:

Аватара пользователя
broom
Модератор
Сообщения: 1629
Статус: мизантроп.ка
ОС: Gentoo

Re: Как сохранить в файл вывод терминала?

Сообщение broom » 12.12.2007 17:31

zh0rzh писал(а):
12.12.2007 17:29
А где сам скрипт, broom? :)
Или команда script?

Команда такая.
but in the darkness, behind your smile, you scream... © Dio
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 12.12.2007 17:40

Ухты. Спасибо за script. Это наиболее удобный вариант.

P.S. Название темы поправил.
Спасибо сказали:

Аватара пользователя
diesel
Модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как сохранить в файл вывод терминала?

Сообщение diesel » 13.12.2007 11:28

MagTux за описание копирования в скрине отдельное спасибо! знал что есть такое, но никогда не задумывался о том как оно делается :)
Спасибо сказали:

Аватара пользователя
ZugDuk
Сообщения: 340

Re: Как сохранить в файл вывод терминала?

Сообщение ZugDuk » 17.12.2007 13:29

А можно один раз и навсегда сделать так, чтобы ВСЕ консольные сообщения, которые выводятся на экран, дублировались бы в лог файл?
Т.е. чтоб и процесс загрузки также дублировался.
Спасибо сказали:

Аватара пользователя
SSDD
Сообщения: 157
ОС: linux

Re: Как сохранить в файл вывод терминала?

Сообщение SSDD » 17.12.2007 15:11

во freeBSD есть замечательная утилита watch, которая позволяет мониторить терминалы, но как оказалось, в Linux она выполняет совсем иные функции =\ Стоит погуглить на эту тему, чего-нть да найдется...

http://www.opennet.ru/man.shtml?topic=watc...8&russian=1
Спасибо сказали:

Аватара пользователя
diesel
Модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как сохранить в файл вывод терминала?

Сообщение diesel » 18.12.2007 11:07

Эм. там выше про script сказали, это не то?
Спасибо сказали:

Аватара пользователя
ZugDuk
Сообщения: 340

Re: Как сохранить в файл вывод терминала?

Сообщение ZugDuk » 19.12.2007 15:09

Нет, я не понял. Как глобально встроить в дистрибутив, чтобы ВСЕ сообщения выводимые на любые видимые глазом терминалы, дублировались бы в файл, включая процесс загрузки.
Если честно, я не знаю, почему все себе еще так не сделали. Это же так логично и понятно.
Спасибо сказали:

Аватара пользователя
MagTux
Сообщения: 23
ОС: Windows XP, Slackware 12

Re: Как сохранить в файл вывод терминала?

Сообщение MagTux » 19.12.2007 15:16

ZugDuk писал(а):
19.12.2007 15:09
Нет, я не понял. Как глобально встроить в дистрибутив, чтобы ВСЕ сообщения выводимые на любые видимые глазом терминалы, дублировались бы в файл, включая процесс загрузки.
Если честно, я не знаю, почему все себе еще так не сделали. Это же так логично и понятно.

ИМХО это не логично. Логичнее писать в файл по потребности. Если писать в файл всё подряд, то в итоге будет невозможно разобраться в получившемся логе. Запустите script, выполните десяток команд с большим выводом, откройте лог и убедитесь, что не так всё красиво, как хотелось бы.
Спасибо сказали:

Аватара пользователя
diesel
Модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как сохранить в файл вывод терминала?

Сообщение diesel » 22.12.2007 01:01

ZugDuk писал(а):
19.12.2007 15:09
Если честно, я не знаю, почему все себе еще так не сделали. Это же так логично и понятно.

сообщения которые при загрузке и так пишутся в файл, и их если хочется читать, то именно из такого файла(ну или командой). При работе с шеллом, - вводимые команды и так сохраняются, - этим можно рулить. Вывод команд ... не всегда нужен, а если нужен, то он легко перенаправляется в файл.
Спасибо сказали:

Аватара пользователя
diesel
Модератор
Сообщения: 5989
ОС: OS X, openSuSE, ROSA, Debian

Re: Как сохранить в файл вывод терминала?

Сообщение diesel » 15.10.2008 11:46

Краткое резюме обсуждения собрано вот тут: F. A. Q -- читать перед открытием новой темы обязательно эта тема открепляется.
Спасибо сказали: