La risposta selezionata non funziona abbastanza bene con più sessioni e non consente di specificare un nome di file di registro personalizzato.
Per le sessioni dello schermo più, questa è la mia formula:
1) creare un file di configurazione per ogni processo:
logfile test.log
logfile flush 1
log on
logtstamp after 1
logtstamp string "[ %t: %Y-%m-%d %c:%s ]\012"
logtstamp on
Se si vuole farlo "al volo", è possibile cambiare logfile
automaticamente. \012
significa "nuova linea", poiché l'utilizzo di \n
lo stamperà sul file di registro: source.
2) Avviare il comando con le bandiere e le "-c" "-l":
screen -c ./test.conf -dmSL 'Test' ./test.pl
Questo è tutto. Si vedrà "test.log" dopo la prima ondata:
...
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 ]
...
ho scoperto che "-L" è ancora necessaria anche quando "accedere" è il file di configurazione.
Non è stato possibile trovare un elenco delle variabili di formato dell'ora (come% m) utilizzate dallo schermo. Se si dispone di un collegamento di tali formati, si prega di postare qui sotto.
** ** EXTRA
Nel caso in cui si desidera farlo "al volo", è possibile utilizzare questo script:
#!/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
Per usarlo, salvarlo (screen.sh) e impostare + x permesso:
./screen.sh TEST ./test.pl
... ed eseguirà ./test.pl e creare un file di log in /var/log/TEST.log
L'impostazione di produzione che sto utilizzando ha più istanze di schermo. Quello di cui ho bisogno l'output ha linea come 'pts/10'. Quindi cosa dovrei fare per ottenere il suo output su un file? – Sid