Repetir um comando de terminal de saída de texto, em uma interface semelhante à ncurses rolável?

2

man ps diz:

If you want a repetitive update of the selection and the displayed information, use top(1) instead.

... no entanto, em alguns casos, não gosto da saída de top - gostaria de ter a saída exatamente igual a ps axf :

$ ps axf
  PID TTY      STAT   TIME COMMAND
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:06  \_ [ksoftirqd/0]
    6 ?        S      0:00  \_ [migration/0]
   11 ?        S<     0:00  \_ [cpuset]
   12 ?        S<     0:00  \_ [khelper]
   13 ?        S<     0:00  \_ [netns]
   15 ?        S      0:00  \_ [sync_supers]
   16 ?        S      0:00  \_ [bdi-default]
   17 ?        S<     0:00  \_ [kintegrityd]
   18 ?        S<     0:00  \_ [kblockd]
   19 ?        S<     0:00  \_ [kacpid]
   20 ?        S<     0:00  \_ [kacpi_notify]
   21 ?        S<     0:00  \_ [kacpi_hotplug]
   22 ?        S<     0:00  \_ [ata_sff]
   23 ?        S      0:00  \_ [khubd]
   24 ?        S<     0:00  \_ [md]
   26 ?        S      0:00  \_ [khungtaskd]
   27 ?        S      0:01  \_ [kswapd0]
   28 ?        SN     0:00  \_ [ksmd]
   29 ?        S      0:00  \_ [fsnotify_mark]
   30 ?        S<     0:00  \_ [aio]
   31 ?        S      0:00  \_ [ecryptfs-kthrea]
   32 ?        S<     0:00  \_ [crypto]
   36 ?        S<     0:00  \_ [kthrotld]
   38 ?        S      0:00  \_ [scsi_eh_0]
   39 ?        S      0:00  \_ [scsi_eh_1]
   40 ?        S<     0:00  \_ [kmpathd]
...

Agora, executar ps axf repetidamente não é um problema (muitas sugestões em Repete um comando Unix a cada x segundo para sempre - Unix & Linux Stack Exchange ); no entanto, como mostra o snippet acima, sua saída pode ser bem maior que o tamanho de uma janela de terminal.

Então, eu estava imaginando - existe um programa que possa executar um comando repetidamente e coletar sua saída e exibi-lo em algo como uma janela ncurses ? Eu preferiria definir ps axf para atualizar em meio segundo - e gostaria de ter rolagem (dado que a saída irá sobrecarregar os limites da janela de terminal), no entanto, se a exibição de texto começar verticalmente, digamos , a linha 6 no topo, permanece nessa posição - mesmo que a saída mais recente do comando tenha mais (ou menos) linhas de texto do que a anterior.

Eu esperava que screen fizesse algo parecido com isso, mas não acho que ele implemente qualquer comportamento de rolagem ... Existe algum programa que faça algo assim?

    
por sdaau 09.02.2014 / 23:39

1 resposta

2

Esse ponto específico de discórdia surgiu aqui na U & L algumas vezes antes. Principalmente em torno da ferramenta watch , que não tem esse recurso.

Geralmente você tem 3 opções.

  1. Use watch com essa limitação
  2. Use um script alternativo ( mywatch.sh ou watchless ) ou ferramentas como pwatch
  3. Use uma ferramenta alternativa para ps , como htop ou atop

Por isso, incentivo você a liberar ps e usá-lo para o que é. Uma maneira rápida de chegar ao estado das coisas quando em um shell. Se você quiser "observar" o estado dos vários processos em execução em um sistema, use uma ferramenta como htop . Ele tem uma visão de "árvore" semelhante à que você está perguntando e você pode rolar pela saída.

NOTA: Para alternar "treeview", simplesmente pressione a tecla t enquanto estiver em htop .

Threaddekernelnohtop?

Sevocêquiserveroencadeamentodokernelemhtop,poderáativá-los.Elesestãodesativadosporpadrão.Existemduasmaneirasdefazerisso.Vocêpodeativá-losedesativá-losusandooatalhodekeyboradShift+K.

TambéméacessívelapartirdomenuSetup,F2.QuandoestivernomenuConfiguração,vocêpodeusarasteclasdeseta(←,↑,→,↓)parasemovimentaremarcarascoisasquevocêusanaBarradeEspaço.Depoisdeescolhersuasalterações,pressioneEscparasair.

OBSERVAÇÃO: Na captura de tela acima, # 1 mostra que você está no menu Configuração . # 2 mostra que usamos as teclas de seta ↑ e ↓ para mover para Opções de exibição . Para acessar essas opções, você usaria as teclas de seta ← e → para passar para a parte de "escolhas" do menu, seguida pelas setas ↑ e ↓ para "selecionar". Depois de selecionar uma opção, você pode usar a barra de espaço para alterná-la.

Referências

por 10.02.2014 / 05:59