Сохранить вывод" экран " (программа) в файл
мне нужно сохранить весь вывод screen
в файл, чтобы проверить позже все содержимое.
Причина в том, что я сбрасываю флэш-память через последовательный порт, используя экран для взаимодействия с ним.
Я хотел бы сохранить его в файл, чтобы проверить структуру памяти.
Я пробовал :
$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt
и я также пытался использовать bufferfile с экрана, но я не понимаю, как его использовать.
есть ли простой способ?
9 ответов:
есть опция командной строки для регистрации. Выходные данные сохраняются в screenlog.N файл, где n-номер экрана. Из man-страниц экрана:
’ - L ' сказать экран, чтобы включить автоматическое ведение журнала вывода для windows.
вы также можете использовать Control-a + H для сохранения журналов в screenlog.файл N. Еще один элемент управления-a + H для выключения.
C-a H: начинается/заканчивается протоколирование текущего окна в файл "screenlog.северный."
для терминала mac:
script -a -t 0 out.txt screen /dev/ttyUSB0 115200
подробности
script
встроенный в приложение, чтобы "сделать машинопись сессии терминала"-a
добавить в выходной файл-t 0
время между записью в выходной файл составляет 0 секунд, так что.txt обновляется для каждого нового символаout.txt
- это просто имя выходного файлаscreen /dev/ttyUSB0 115200
- команда из вопроса для подключения к внешнему устройствовы можете использовать хвост, чтобы увидеть, что файл обновляется
хвост -100 наружу.txt
выбранный ответ не очень хорошо работает с несколькими сеансами и не позволяет указать имя пользовательского файла журнала.
для нескольких сеансов экрана, это моя формула:
1) Создайте конфигурационный файл для каждого процесса:
logfile test.log logfile flush 1 log on logtstamp after 1 logtstamp string "[ %t: %Y-%m-%d %c:%s ]2" logtstamp on
если вы хотите сделать это "на лету" можно изменить
logfile
автоматически.2
означает "новая строка", как с помощью\n
напечатает его в файле журнала:источник.2) Начните команда с флагами"- c "и"- L":
screen -c ./test.conf -dmSL 'Test' ./test.pl
вот и все. Вы увидите "тест.журнал " после первого смыва:
... 6 Something is happening... [ test.pl: 2016-06-01 13:02:53 ] 7 Something else... [ test.pl: 2016-06-01 13:02:54 ] 8 Nothing here [ test.pl: 2016-06-01 13:02:55 ] 9 Something is happening... [ test.pl: 2016-06-01 13:02:56 ] 10 Something else... [ test.pl: 2016-06-01 13:02:57 ] 11 Nothing here [ test.pl: 2016-06-01 13:02:58 ] ...
я обнаружил, что "-L" по-прежнему требуется, даже когда "вход в систему" находится в файле конфигурации.
Я не смог найти список переменных формата времени (например, %m), используемых экраном. Если у вас есть ссылка на эти форматы, пожалуйста, напишите его ниже.
* * EXTRA**
в случае, если вы хотите сделать это "на лету", вы можете использовать это сценарий:
#!/bin/bash if [[ == "" ]]; then echo "Usage: name command"; exit 1; fi name= command= path="/var/log"; config="logfile ${path}/${name}.log logfile flush 1 log on logtstamp after 1 logtstamp string \"[ %t: %Y-%m-%d %c:%s ]2\" logtstamp on"; echo "$config" > /tmp/log.conf screen -c /tmp/log.conf -dmSL '$name' $command rm /tmp/log.conf
чтобы использовать его, сохраните его (screen.sh) и установить +x permissions:
./screen.sh TEST ./test.pl
... и исполнит ./test.pl и создайте файл журнала в /var/log / TEST.журнал
Ctrl+A затем Shift+H работает для меня. Вы можете просмотреть файл
screenlog.0
пока программа еще работает.
следующая команда работает для версии экрана 4.06.02
screen -L -Logfile Log_file_name_of_your_choice command_to_be_executed
С главной страницы экрана:
-Logfile file : By default logfile name is "screenlog.0". You can set new logfile name with the "-Logfile" option.
вы можете проверить существующую версию используя screen-version. Вы можете скачать и установить последнюю версию версия от https://www.gnu.org/software/screen/.
команда 'script' под Unix должна сделать трюк. Просто запустите его в начале новой консоли, и вы должны быть хороши.