Provavelmente há apenas uma coisa faltando em seu exemplo, a opção -f
para liberar a gravação a cada vez.
script -f >(while read;do date;echo "$REPLY";done >>session.log)
No meu .bash_profile, tenho script -a -t 0 session.log
, que registra automaticamente todos os terminais de entrada / saída no arquivo session.log. Eu sei que este comando vem com um sinalizador opcional para registrar as diferenças de tempo em outro arquivo, mas eu queria saber se havia outra maneira de prefixar as linhas session.log com um timestamp.
Posso canalizar as gravações para uma função de shell diferente antes de gravá-la em session.log? Algo assim script -a >(add_timestamps.sh >> session.log)
(não funciona)
isso pode ser uma solução parcial, dependendo de suas necessidades: se você incluir \ d \ D {} na sua string PS1, cada prompt de comando incluirá a data e a hora. que lhe dará o tempo em que o comando anterior terminou. no caso mais simples, faça
PS1='\d \D{} $ '
faça isso depois de invocar o script (ou no seu .bashrc ou qualquer outro) e você receberá uma session.log assim:
Wed Apr 20 08:23:55 PM $ date
Wed Apr 20 20:23:57 EDT 2016
Wed Apr 20 08:23:57 PM $ exit
Soa como ts
, de moreutils .
Muitas distribuições estão empacotadas. Apenas acrescenta carimbos de tempo às linhas de entrada.
Exemplo de uso:
$ while true; do sleep 1; echo hi; done | ts %s
1461198715 hi
1461198716 hi
1461198717 hi
1461198718 hi
[ ... ]
Ao usar o awk como destino de saída de log, você pode adicionar um registro de data e hora ao início de cada linha.
script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>> session.log)
Exemplo)
[root@BS-PUB-CENT7-01 ~]# LANG=C script -fq >(awk '{print strftime("%F %T ") $0}{fflush() }'>>
session.log)
[root@BS-PUB-CENT7-01 ~]# pwd
/root
[root@BS-PUB-CENT7-01 ~]#
[root@BS-PUB-CENT7-01 ~]# echo aaa
aaa
[root@BS-PUB-CENT7-01 ~]#
[root@BS-PUB-CENT7-01 ~]# exit
exit
[root@BS-PUB-CENT7-01 ~]#
[root@BS-PUB-CENT7-01 ~]# cat session.log
2017-05-26 01:12:11 Script started on Fri May 26 01:12:11 2017
2017-05-26 01:12:13 [root@BS-PUB-CENT7-01 ~]# pwd
2017-05-26 01:12:13 /root
2017-05-26 01:12:14 [root@BS-PUB-CENT7-01 ~]#
2017-05-26 01:12:16 [root@BS-PUB-CENT7-01 ~]# echo aaa
2017-05-26 01:12:16 aaa
2017-05-26 01:12:16 [root@BS-PUB-CENT7-01 ~]#
2017-05-26 01:12:17 [root@BS-PUB-CENT7-01 ~]# exit
2017-05-26 01:12:17 exit
Tags logs terminal timestamps typescript