Como eu altero o comprimento da linha de saída do comando “top” do linux sendo executado no modo batch

2

O comando a seguir é útil para capturar os processos atuais que estão ocupando mais CPU e armazenam em um arquivo:

top -c -b -n 1 > top.log

O sinalizador -c é particularmente útil porque fornece os argumentos da linha de comando de cada processo, em vez de apenas o nome do processo.

Sem -c :

2497 root      18   0 11264 5888 1524 S  0.0  0.1   0:03.31 miniserv.pl

Com -c (informações adicionais úteis sobre o comando):

2497 root      18   0 11264 5888 1524 S  0.0  0.1   0:03.31 /usr/bin/perl /usr/libexec/webmin/miniserv.pl /etc/webmin/miniserv.conf

O problema é que cada linha de saída é truncada para caber na janela do terminal atual. Isso é ok se você pode ter um terminal grande porque você tem um monte de saída, mas se o seu terminal tem apenas 165 caracteres, você só obtém 165 caracteres de informação por processo e muitas vezes não há caracteres suficientes para mostrar o comando completo do processo. . Esse é um problema específico quando o comando é executado sem um terminal, por exemplo, se você fizer isso por meio de um cron job.

Alguém sabe como parar top truncando dados ou forçar top a exibir um certo número de caracteres por linha?

Isso não é urgente porque existe um método alternativo de obter os 10 principais processos ordenados pelo uso da CPU:

ps -eo pcpu,pmem,user,args | sort -r -k1 | head -n 10
    
por Tom 30.04.2010 / 11:16

1 resposta

3

Você pode definir a variável de ambiente COLUMNS como um valor grande. Por exemplo, para configurá-lo apenas para top invocation:

$ COLUMNS=1000 top -c -b -n 1 > top.log

Pelo menos funciona no bash 4.0.33 no Ubuntu 9.10.

    
por 30.04.2010 / 11:41