htop nie zwraca użycia procesora ani pamięci !?

80

Myślę, że top to świetna aplikacja do monitorowania systemu Linux. Bardzo mi się podoba, ale top nie wygląda tak dobrze na Macu. Wiem, że Mac ma do tego monitor systemowy, ale wolę używać terminala.

Zainstalowałem htop , uruchamiając:

brew install htop.

Oto jak to wygląda:

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)

Problem polega na tym, że zarówno procesor, jak i MEM nie zwracają rzeczywistych wartości żadnego z moich systemów.

Czy ktoś jeszcze tego doświadczył? A może ktoś wskaże mi właściwy kierunek?

Yuan He
źródło

Odpowiedzi:

92

Mam ten sam problem, więc sprawdzam przepis.

$ brew edit htop

Następnie sprawdzam tę część przepisu:

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

Więc po prostu wpisz, sudo htopa zobaczysz CPU i MEM .

matiskay
źródło
18
Możesz użyć, brew info htopaby zobaczyć treść zastrzeżeń
AB
4
Jest to pomocne również dla tych, którzy zainstalowali Macports; dla mnie nie wiem dlaczego, ale sudo htopnie działał. htopzostał zainstalowany /bin, więc tam byłem cdi pobiegłem chmod 6555 htop && sudo chown root htop. Teraz htopdziała dobrze.
Brian McCutchon
1
@AB już nie, zmienili to.
Dalibor Filus
4
To rozwiązanie pozwala każdemu użytkownikowi zabić procesy dowolnego użytkownika (lub użytkownika root). Czy istnieje sposób, aby htop mógł odczytać procesor i MEM bez modyfikacji systemu?
Max
Jeśli chcesz zmodyfikować htopgdziekolwiek jest zainstalowany, użyjchmod 6555 "$(which htop)"
BallpointBen
20

Z moich informacji o naparach:

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

Dzięki temu nie muszę uruchamiać htopa jako sudo

Ivan Suftin
źródło
6

Oto alternatywa dla tych, którzy nie chcą zmarnować uprawnień i nadal unikają pisania sudo htopzamiast htop:

  1. Zainstaluj za pomocą naparu: brew install htop
  2. Pozwól sudo htopdziałać bez hasła sudo
    1. Uruchom, sudo visudoaby otworzyć plik sudoers w edytorze
    2. Dodaj to do pliku konfiguracyjnego: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Zapisz plik i wyjdź ( :wqnajprawdopodobniej)
  3. Dodaj następujący alias do pliku rc powłoki (przykład dla ~/.bashrclub ~/.profile): alias htop='sudo htop'
Sukima
źródło
0

Zauważ, że aby najnowsze wersje htopa działały poprawnie w systemie OS X, nie wystarczy „błogosławić” htopa za pomocą chmod 6555 htopi sudo chown htop- gdy htop będzie działał, dane wyjściowe będą się różnić między htopi sudo htop.

Oto zrzut ekranu „błogosławionego” wystąpienia htopa, wywoływanego jako htop:

wprowadź opis zdjęcia tutaj

a oto jego zdjęcie działające jako sudo htop:

wprowadź opis zdjęcia tutaj

Jak widać, nie wywoływane sudo htopwyświetla znacznie mniej informacji.

Prawidłowa odpowiedź została przedstawiona przez @Sukima; niestety jest wymagany alias htopdo sudo htop. Dla użytkowników linii poleceń wpisywanie hasła w monicie jest drugą naturą i myślę, że dla większości z nas zapomnienie o uruchomieniu htopjako sudo jest problemem, a nie koniecznością wpisywania hasła. Odradzam zezwalanie sudo htopna uruchamianie bez pytania o hasło, ale jeśli chcesz to zrobić, najlepszym rozwiązaniem jest zezwolenie jednemu, nazwanemu użytkownikowi na uruchomienie htop (i tylko htop) bez hasła (chociaż jest to ogromna luka ponieważ htop jest potężny i rozszerzalny i może uruchamiać zewnętrzne polecenia, co oznacza, że ​​ktokolwiek uruchamia htop jako sudo, może zrobić wszystko):

sudo visudo
# add the line below somewhere in the editor
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/htop
# save and exit
Mahmoud Al-Qudsi
źródło