adiciona registros de data e hora à sessão gravada através do comando “script”

2

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)

    
por Luiz 21.04.2016 / 02:10

4 respostas

1

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)
    
por 21.04.2016 / 09:34
1

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
    
por 21.04.2016 / 02:29
0

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
[ ... ]
    
por 21.04.2016 / 02:32
0

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
    
por 23.05.2017 / 19:22