Como posso gravar um vídeo como a saída do comando top por um período de tempo definido?

3

O comando top gera uma visualização ao vivo dos processos e seu uso de recursos em um sistema.

Gostaria de iniciar um programa em uma instalação de servidor, que inicia uma variedade de processos diferentes, com PIDs não previsíveis, e capture a saída variável de top , sem precisar depender de uma conexão ssh de um ambiente de trabalho. De preferência, eu gostaria de poder 'repetir' isso no mesmo ambiente de CLI, como se fosse um vídeo, mas poderia mover o arquivo de maneira aceitável para outro lugar para visualizá-lo assim.

Existe uma maneira, usando apenas linha de comando, de um terminal direto em uma instalação de servidor, que eu possa gravar esta saída por um período de tempo definido? Ou inserindo um valor para o tempo ou iniciando e interrompendo manualmente o processo de gravação.

    
por Arronical 02.12.2015 / 17:25

3 respostas

6

Você pode usar os utilitários 'script' e 'scriptreplay' para fazer isso.

  1. execute o script com a opção --timing:

    script --timing = top.timing topscript

  2. execute o comando top, deixe-o rodar o quanto quiser

  3. saia da parte superior usando q ou control-c.

  4. saia da sessão de script com control-D (EOF) ou digite exit

  5. execute scriptreplay para reproduzir o script:

    scriptreplay top.timing topscript

por TREE 02.12.2015 / 21:04
6

O modo normal de operação de top não é adequado para salvar a saída em um arquivo.

Você pode usar o modo -b (lote) de top , juntamente com o intervalo de tempo apropriado para a verificação ( -d ) e o número de iterações para contagem ( -n ).

Você também pode mencionar PIDs específicos ( -p ) para verificar apenas.

Por exemplo:

top -b -d 5 -n 3 -p 1089,2345 >output.txt

executará top no modo batch, fará 3 iterações após 5 segundos cada e monitorará apenas dois PIDs mencionados (1089,2345). A saída será salva em output.txt .

Altere os valores para atender às suas necessidades.

    
por heemayl 02.12.2015 / 18:01
1

Isso não é exatamente igual ao top , mas você pode usar este script:

while true; do
echo 
echo $(date)
echo
ps -eo pid,user,pri,ni,vsize,rss,stat,pcpu,pmem,time,wchan --sort=-pcpu | head -20
sleep 5 
done  > ps.log

Você terá mais ou menos as informações de top no arquivo ps.log . Para detalhes sobre o comando ps , consulte man ps .

    
por Rmano 02.12.2015 / 17:49