Сохранить вывод" screen " (program) в файл
мне нужно сохранить весь вывод 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
встроенный в приложение ,чтобы "сделать typescript терминальной сессии" -
-a
добавить в выходной файл -
-t 0
время между записью в выходной файл составляет 0 секунд, поэтому.txt обновляется для каждого нового символа -
out.txt
- это просто имя выходного файла -
screen /dev/ttyUSB0 115200
- команда из вопроса для подключения к внешнему устройство
затем вы можете использовать tail, чтобы увидеть, что файл обновляется
хвост -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.log
Ctrl+A затем Shift+H работает для меня. Вы можете просмотреть файл screenlog.0
пока программа еще работает.
следующая команда работает для версии экрана 4.06.02
screen -L -Logfile Log_file_name_of_your_choice command_to_be_executed
из man-страницы экрана:
-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/.
команда "скрипт" в Unix должна сделать трюк. Просто запустите его на старте новой консоли и вы должны быть хорошо.
может быть полезно следующее (протестировано на: Linux / Ubuntu 12.04):
cat /dev/ttyUSB0
используя вышеизложенное, вы можете выполнить все необходимые переориентации. Например, чтобы сбросить вывод на консоль при сохранении в файл, вы должны сделать:
cat /dev/ttyUSB0 | tee console.log
вот трюк: оберните его в sh -c
!
screen sh -c './some-script 2>&1 | tee mylog.log'
здесь 2>&1
перенаправляет stderr в stdout so tee
может ловить и регистрировать сообщения об ошибках.