GNU screen é o utilitário de depuração serial mais robusto

Fazendo desenvolvimento embarcado com microcontroladores, eu tenho usado a tela GNU como um terminal serial há um bom tempo e adoro como é simples:

screen /dev/ttyUSB1 38400

Estou surpreso que, até recentemente, não sabia que despejar o log de depuração em um arquivo seria extremamente útil. Eu usei sttye catno passado, mas é um pouco entediante com adaptadores seriais USB, que estão em uso atualmente. Basicamente, você só precisa executar sttypara definir a taxa de transmissão após o dispositivo ter sido desconectado e reconectado, então você se esquece de executá-lo de vez em quando e não pode usá-lo com shells interativos de qualquer maneira.

Portanto, definir o buffer de rolagem de log para algum tamanho alto ou infinito e usar a pesquisa na tela pode ser uma solução, mas é um pouco mais limitante do que usar grepe realmente ser capaz de preservar o arquivo para referência futura.

Então olhei na página de manual da tela e encontrei alguns comandos muito úteis:

hardcopy [-h] [<file>]

Grava a imagem atualmente exibida no arquivo de arquivo ou, se nenhum nome de arquivo for especificado, em hardcopy.n no diretório padrão, onde n é o número da janela atual. Isso anexa ou sobrescreve o arquivo se ele existir. Ver abaixo. Se a opção for especificada, despeja também o conteúdo do buffer de rolagem.-h

hardcopy_append [on|off]

Se definido como on, a tela será anexada aos arquivos criados pelo comando , caso contrário, esses arquivos serão substituídos a cada vez. O padrão é .hardcopy.nC-a hoff

hardcopydir <directory>

Define um diretório onde os arquivos impressos serão colocados. Se não estiver definido, as cópias impressas serão despejadas no diretório de trabalho atual da tela.

Eu poderia usar hardcopy, mas gosto logum pouco mais porque não preciso me lembrar de realmente executá-lo.

log [on|off]

Inicia / interrompe a gravação da saída da janela atual em um arquivo "screenlog.%n"no diretório padrão da janela, onde é o número da janela atual. Este nome de arquivo pode ser alterado com o comando. Se nenhum parâmetro for fornecido, o estado de registro é alternado. O log da sessão é anexado ao conteúdo anterior do arquivo, se já existir. O conteúdo atual e o conteúdo do histórico de rolagem não são incluídos no log da sessão. O padrão é .%nlogfileoff

logfile <filename>
logfile flush
<secs>

Define o nome que os arquivos de log receberão. O padrão é "screenlog.%n". A segunda forma altera o número de segundos que a tela aguardará antes de liberar o buffer do arquivo de log para o sistema de arquivos. O valor padrão é 10 segundos.

logtstamp [on|off]
logtstamp after
<secs>
logtstamp
string <format>

Este comando controla o mecanismo de registro de data e hora do arquivo de log da tela. Se os timestamps forem ativados on, a tela adiciona uma string contendo a hora atual ao arquivo de log após dois minutos de inatividade. Quando a saída continua e mais de dois minutos se passaram, um segundo carimbo de data / hora é adicionado para documentar o reinício da saída. Você pode alterar esse tempo limite com a segunda forma do comando. A terceira forma é usada para personalizar a string de carimbo de data / hora ( "-- %n:%t -- time-stamp -- %M/%d/%y %c:%s --n"por padrão).

deflog [on|off]

Igual ao comando log, exceto que a configuração padrão para novas janelas é alterada. A configuração inicial é off.

Alguns dos meus colegas e amigos mudaram de screenpara tmux, mas percebi que esse é um dos recursos que por tmuxacaso não tinha, da última vez que verifiquei.