Interacção conveniente da consola de estampagem de data / hora, p. ex. usando aliases de shell?

2

Por isso, muitas vezes descubro que realmente quero saber quando iniciei um processo (ou script) depois que descobri que estava demorando ... o que significa que não consegui pré-pendurar a data antes e depois dela na linha de comando (sem interromper algo que agora sei demora) ... e então o processo pode terminar enquanto eu estiver fora do terminal.

Isso me fez pensar - é possível contorcer o aliasing de shell de tal forma que, por padrão, uma 'data' é invocada antes e depois de cada entrada da linha de comando? Seria super-útil às vezes ser capaz de rolar de volta no terminal e ter uma ideia de quanto tempo as coisas levaram.

As outras pessoas têm maneiras inteligentes de lidar com isso? Tenho certeza de que é um cenário bastante comum.

Em termos de soluções com essa abordagem, acredito que isso esteja relacionado um pouco com esse Q. Executa um subshell de bash interativo com comandos iniciais sem retornar ao shell ("super") imediatamente

onde é claro que você pode preceder comandos ... mas isso é apenas uma parte da solução. Talvez a pré-pendência e, em seguida, obter o prompt do shell para mostrar o horário atual seria uma solução bastante clara?

Pensamentos?

    
por user73225 16.01.2017 / 14:39

2 respostas

4

Você pode simplesmente modificar o prompt do shell PS1 variable para mostrar o timestamp atual. Um dos seguintes pode ser usado:

\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\A     the current time in 24-hour HH:MM format

Você pode encontrá-los com outras opções em man bash . Edite seu arquivo .bashrc para modificar PS1 conforme desejado.

Você pode determinar quando qualquer comando é executado. Claro, se você ficar ocioso por um longo tempo antes de entrar, você não terá tempo exato.

Editar: Outra possibilidade é usar o utilitário ts para mostrar como o seu script está progredindo. Execute seu script como:

$ /path/to/script | ts

Cada declaração de eco será exibida com um registro de data e hora.

    
por 16.01.2017 / 15:05
1

NOTA: esta não é uma resposta direta ao que o OP está pedindo, mas pode ser útil para resolver o problema, talvez.

Para processos já iniciados, você pode recuperar a data / hora de início emitindo um ps ax -F simples. Ele mostrará uma saída semelhante à seguinte:

apache    1733  1678  0 83467  7752   0 10:07 ?        S      0:00 /usr/sbin/httpd
apache    1734  1678  0 83467  7752   0 10:07 ?        S      0:00 /usr/sbin/httpd
apache    1735  1678  0 83467  7752   0 10:07 ?        S      0:00 /usr/sbin/httpd
apache    1736  1678  0 83467  7768   0 10:07 ?        S      0:00 /usr/sbin/httpd
apache    1737  1678  0 83467  7752   0 10:07 ?        S      0:00 /usr/sbin/httpd
apache    1738  1678  0 83467  7752   0 10:07 ?        S      0:00 /usr/sbin/httpd

Como você pode ver, a oitava coluna mostra a data / hora de início.

    
por 16.01.2017 / 16:49

Tags