pengembangan-web-mp-pd.com

Simpan "layar" (program) output ke file

Saya perlu menyimpan seluruh output screen ke file untuk memeriksa nanti semua konten.
Alasannya adalah bahwa saya membuang memori flash melalui port serial, menggunakan layar untuk berinteraksi dengannya.
Saya ingin menyimpannya di file untuk memeriksa struktur memori. 

Saya sudah mencoba: 

$: screen /dev/ttyUSB0 115200 >> foo.txt
$: screen /dev/ttyUSB0 115200 | tee foo.txt

dan saya juga mencoba menggunakan bufferfile dari layar, tetapi saya tidak mengerti bagaimana menggunakannya. 

Apakah ada cara mudah?

83
Edoardoo

Ada opsi baris perintah untuk masuk. Output disimpan ke file screenlog.n, di mana n adalah sejumlah layar . Dari halaman manual layar:

‘-L’ Layar Tell untuk mengaktifkan log keluaran otomatis untuk windows. 

92
Fergie

Anda juga dapat menggunakan Control-a + H untuk menyimpan loggings ke file screenlog.n . Satu lagi Control-a + H untuk mematikan.

C-a H: Memulai/mengakhiri logging dari jendela saat ini ke file "screenlog.n".

89
NeliJ

Jawaban yang dipilih tidak bekerja dengan baik dengan beberapa sesi dan tidak memungkinkan untuk menentukan nama file log kustom.

Untuk beberapa sesi layar, ini adalah rumus saya:

1) buat file konfigurasi untuk setiap proses:

logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012"
logtstamp on

Jika Anda ingin melakukannya "sambil jalan", Anda dapat mengubah logfile secara otomatis .\012 berarti "baris baru", karena menggunakan \n akan mencetaknya di file log: source .

2) Mulai perintah Anda dengan flag "-c" dan "-L":

screen -c ./test.conf -dmSL 'Test' ./test.pl

Itu dia. Anda akan melihat "test.log" setelah flush pertama:

...
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 ]
...

Saya menemukan bahwa "-L" masih diperlukan bahkan ketika "masuk" ada di file konfigurasi. 

Saya tidak dapat menemukan daftar variabel format waktu (seperti% m) yang digunakan oleh layar. Jika Anda memiliki tautan format-format itu, silakan kirim di bawah.

** EXTRA **

Jika Anda ingin melakukannya "on the fly", Anda dapat menggunakan skrip ini:

#!/bin/bash
if [[ $2 == "" ]]; then
    echo "Usage: $0 name command";
    exit 1;
fi
name=$1
command=$2
path="/var/log";
config="logfile ${path}/${name}.log
logfile flush 1
log on
logtstamp after 1
logtstamp string \"[ %t: %Y-%m-%d %c:%s ]\012\"
logtstamp on";
echo "$config" > /tmp/log.conf
screen -c /tmp/log.conf -dmSL "$name" $command
rm /tmp/log.conf

Untuk menggunakannya, simpan (screen.sh) dan set + x izin:

./screen.sh TEST ./test.pl

... dan akan menjalankan ./test.pl dan membuat file log di /var/log/TEST.log

12
lepe

untuk terminal mac:

script -a -t 0 out.txt screen /dev/ttyUSB0 115200 

detail

  • script aplikasi bawaan untuk "membuat TypeScript sesi terminal"
  • -a ditambahkan ke file output
  • -t 0 waktu antara menulis ke file output adalah 0 detik, jadi out.txt diperbarui untuk setiap karakter baru
  • out.txt hanya nama file output
  • screen /dev/ttyUSB0 115200 - perintah dari pertanyaan untuk menghubungkan ke perangkat eksternal

anda kemudian dapat menggunakan ekor untuk melihat bahwa file sedang diperbarui 

tail -100 out.txt

12
ryan

Perintah berikut ini berfungsi untuk layar versi 4.06.02

screen -L -Logfile Log_file_name_of_your_choice command_to_be_executed

Dari halaman manual layar:

-Logfile file : By default logfile name is "screenlog.0". 
                You can set new logfile name with the "-Logfile" option.

Anda dapat memeriksa versi layar yang ada menggunakan layar-versi. Anda dapat mengunduh dan menginstal versi layar terbaru dari https://www.gnu.org/software/screen/ .

9
Nikhil

Ctrl+A kemudian Shift+H bekerja untukku. Anda dapat melihat file screenlog.0 saat program masih berjalan.

9
jaggedsoft

Perintah 'script' di bawah Unix harus melakukan trik. Jalankan saja di awal konsol baru Anda dan Anda akan menjadi baik.

4
Ruben

Berikut ini mungkin berguna (Diuji pada: Linux/Ubuntu 12.04):

cat /dev/ttyUSB0

Dengan menggunakan di atas, Anda kemudian dapat melakukan semua arahan ulang yang Anda butuhkan. Misalnya, untuk membuang output ke konsol Anda sambil menyimpan ke file Anda, Anda akan melakukan:

cat /dev/ttyUSB0 | tee console.log
3
Keo Malope

Ini sebuah trik: bungkus dalam sh -c!

screen sh -c './some-script 2>&1 | tee mylog.log'

Di mana 2>&1 mengarahkan stderr ke stdout sehingga tee dapat menangkap dan mencatat pesan kesalahan.

0
rkok