Eu sou um novato no linux e estou tentando assistir a um comando e tentar registrá-lo em um arquivo. eu tentei
watch -t -n 10 "(data '+ HORA:% H:% M:% S'; ps aux | grep" padrão "| wc -l)" >> arquivo de log
e estou esperando um resultado como
TIME: 10:32:30 12
TIME: 10:32:40 18
TIME: 10:32:50 2
para ser armazenado no arquivo de log. No entanto, quando o arquivo de log possui caracteres não imprimíveis. Como obtenho esse tipo de saída do comando li
ps
. Vou modificar minha resposta.Isso pode ser feito facilmente usando-o
watch
também sem usar nenhum script.watch -t -n 10 "(date '+TIME:%H:%M:%S' ; ps aux | grep "pattern" | wc -l) | tee -a logfile"
fonte
tee -a logfile
no arg passado parawatch
. Muito limpo, obrigado.watch
destina-se à saída para um monitor. Se você simplesmente deseja executar um comando a cada X segundos, basta usar um loop de atraso para isso.fonte
O watch é um programa ncurses e foi projetado para ser executado em uma janela do console (não redirecionada), e é por isso que está criando um monte de caracteres não imprimíveis (esses são os caracteres de controle que gerenciam e movem o cursor para redesenhar a tela).
Você pode tentar mover os comandos date / grep para um script e depois chamá-lo de um cronjob.
fonte
Ok, então eu coloquei em um script e tenho o seguinte código:
fonte
Me deparei com essa pergunta quando estava tentando obter uma saída melhor / registrada
du -sh $data_path
. Usei o padrão "while command, sleep" encontrado aqui, mas usei um AWK complexo para fornecer a saída que eu queria.Na verdade, eu fiz isso como um oneliner, e é por isso que há ponto e vírgula. Mas, para torná-lo legível, eu expliquei. A saída se parece com:
fonte
Aqui está um exemplo que eu só precisava para um
watch
on aps axf
com um timestamp na parte inferior de toda a saída. Estou observando quando o Apache falha. Eu tive que canalizartee
para cada comando, oeps
odate
.watch 'ps axf | grep --line-buffered "[a]pache2"| tee --append logfile-apache-issue.log; date '+TIME:%H:%M:%S' | tee --append logfile-apache-issue.log'
Saída de amostra
tail --follow logfile-apache-issue.log
no arquivo resultante.fonte