Questão htop não está retornando CPU ou uso de memória!


eu penso isso topo é ótimo aplicativo para monitorar um sistema Linux. Eu realmente gosto disso, mas topo não parece tão bom no Mac. Eu sei que o Mac tem um monitor de sistema para fazer isso, mas eu prefiro usar um terminal.

Eu instalei htop Correndo:

brew install htop.

Aqui está o que parece:

PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
    1 0          0   0     0     0     0 ?  0.0  0.0  0:00.00 (launchd)
   10 0          0   0     0     0     0 ?  0.0  0.0  0:00.00 (kextd)
   11 0          0   0     0     0     0 ?  0.0  0.0  0:00.00 (UserEventAgent)
   12 65         0   0     0     0     0 ?  0.0  0.0  0:00.00 (mDNSResponder)

O problema é que ambos CPU e MEM não estão retornando os valores reais do meu sistema.

Alguém mais experimentou isso? Ou alguém poderia me apontar na direção certa?


79


origem




Respostas:


Eu tenho o mesmo problema, então eu verifico a receita.

$ brew edit htop

Então eu verifico esta parte da receita:

def caveats; <<-EOS.undent
    For htop to display correctly all running processes, it needs to run as root.
    If you don't want to `sudo htop` every time, change the owner and permissions:
    cd #{bin}
    chmod 6555 htop
    sudo chown root htop
EOS

Então apenas digite sudo htop e você verá CPU e MEM.


93



Você pode usar brew info htop para ver o conteúdo de advertências - A B
Isso é útil para quem instalou com macports também; para mim, eu não sei porque, mas sudo htop não funcionou. htop foi instalado em /bin, então eu cdlá e correu chmod 6555 htop && sudo chown root htop. Agora htop funciona bem. - Brian McCutchon
@AB não mais, eles mudaram. - Dalibor Filus
Esta solução permite que qualquer usuário mate os processos de qualquer outro usuário (ou root). Existe uma maneira de permitir que o htop ler CPU e MEM sem permitir que modifique o sistema? - Max
Se você quiser modificar htoponde quer que esteja instalado, use chmod 6555 "$(which htop)" - BallpointBen


Da minha informação de cerveja:

You can either run the program via `sudo` or set the setuid bit:

  sudo chown root:wheel /usr/local/Cellar/htop-osx/0.8.2.2/bin/htop

  sudo chmod u+s /usr/local/Cellar/htop-osx/0.8.2.2/bin/htop

Isso funcionou para garantir que eu não precise rodar o htop como sudo


19





Aqui está uma alternativa para quem não quer mexer com as permissões e ainda assim evitar digitar sudo htop de preferência a apenas htop:

  1. Instalar com brew: brew install htop
  2. Permitir sudo htop para executar sem senha sudo
    1. Corre sudo visudo abrir o arquivo sudoers em um editor
    2. Adicione isto ao arquivo de configuração: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Salve o arquivo e saia (:wq provavelmente)
  3. Adicione o seguinte alias ao seu arquivo shell rc (exemplo é para ~/.bashrc ou ~/.profile): alias htop='sudo htop'

6





Note que para as versões mais recentes do htop funcionarem corretamente no OS X, não é suficiente "abençoar" o htop com chmod 6555 htop e sudo chown htop - enquanto o htop for executado, a saída será diferente entre htop e sudo htop.

Aqui está uma captura de tela da instância htop "abençoada", invocada como htop:

enter image description here

e aqui está uma foto dele funcionando como sudo htop:

enter image description here

Como você pode ver, o não-sudo-invocado htop exibe significativamente menos informações.

A resposta correta foi apresentada por @Sukima; infelizmente é necessário para alias htop para sudo htop. Para usuários de linha de comando, digitando a senha no prompt é uma segunda natureza e eu acho que para a maioria de nós é esquecer de lançar htop como sudo que é o problema em vez de ser obrigado a digitar a senha. Eu recomendo fortemente não permitir sudo htop para executar sem um prompt de senha, mas se você desejar, a melhor abordagem é permitir que um único usuário nomeado inicie o htop (e apenas htop) sem uma senha (embora isso seja uma enorme vulnerabilidade, pois o htop é poderoso e extensível e pode executar comandos externos, o que significa que quem executa o htop como sudo pode fazer qualquer coisa):

sudo visudo
# add the line below somewhere in the editor
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/htop
# save and exit

0