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

80

Eu acho que esse top é um ótimo aplicativo para monitorar um sistema Linux. Eu realmente gosto, mas o top 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.

Instalei o htop executando:

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 a CPU e o MEM não estão retornando os valores reais de nenhum deles no meu sistema.

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

Yuan He
fonte

Respostas:

92

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, basta digitar sudo htope você verá CPU e MEM .

matiskay
fonte
18
Você pode usar brew info htoppara ver o conteúdo das advertências
AB
4
Isso é útil para quem instalou com macports também; para mim, não sei por que, mas sudo htopnão funcionou. htopfoi instalado /bin, então eu estava cdlá e corri chmod 6555 htop && sudo chown root htop. Agora htopfunciona bem.
Brian McCutchon
1
@AB não mais, eles mudaram.
Dalibor Filus 6/04/2015
4
Esta solução permite que qualquer usuário mate os processos de qualquer outro usuário (ou raiz). Existe uma maneira de permitir que o htop leia CPU e MEM sem modificar o sistema?
Max
Se você quiser modificar htoponde quer que esteja instalado, usechmod 6555 "$(which htop)"
BallpointBen
20

De minhas informações de fermentação:

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 executar o htop como sudo

Ivan Suftin
fonte
6

Aqui está uma alternativa para aqueles que não querem mexer com as permissões e ainda evitar digitar a sudo htoppreferência apenas htop:

  1. Instale com o brew: brew install htop
  2. Permitir sudo htopa execução sem senha sudo
    1. Execute sudo visudopara abrir o arquivo sudoers em um editor
    2. Adicione isso ao arquivo de configuração: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Salve o arquivo e saia ( :wqprovavelmente)
  3. Adicione o seguinte alias ao seu arquivo shell rc (o exemplo é para ~/.bashrcou ~/.profile): alias htop='sudo htop'
Sukima
fonte
0

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

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

insira a descrição da imagem aqui

e aqui está uma foto dele sendo executada como sudo htop:

insira a descrição da imagem aqui

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

A resposta correta foi apresentada por @Sukima; infelizmente é necessário alias htoppara sudo htop. Para usuários de linha de comando, digitar a senha no prompt é uma segunda natureza e acho que para a maioria de nós está esquecendo de iniciar htopcomo sudo que é o problema, em vez de precisar digitar a senha. É altamente recomendável não permitir sudo htopa execução sem um prompt de senha, mas se você deseja fazê-lo, a melhor abordagem é permitir que um único usuário nomeado inicie o htop (e apenas o htop) sem uma senha (embora essa seja uma enorme vulnerabilidade como 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
Mahmoud Al-Qudsi
fonte