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:
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 "on the fly", Anda dapat mengubahnya logfile
secara otomatis.
\012
berarti "baris baru", karena menggunakan \n
akan mencetaknya di file log: sumber .
Mulai perintah Anda dengan bendera "-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 itu, silakan kirim di bawah.
Tambahan
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