htop ne retourne pas l'utilisation du processeur ou de la mémoire!?

80

Je pense que top est une excellente application pour surveiller un système Linux. Je l’aime vraiment beaucoup, mais top n’a pas l’air si bon sur Mac. Je sais que Mac a un moniteur système pour le faire, mais je préfère utiliser un terminal.

J'ai installé htop en lançant:

brew install htop.

Voici à quoi cela ressemble:

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)

Le problème est que les deux processeurs et MEM ne renvoient pas les valeurs réelles de l'un ou l'autre sur mon système.

Quelqu'un d'autre a-t-il vécu cela? Ou, est-ce que quelqu'un pourrait me diriger dans la bonne direction?

Yuan He
la source

Réponses:

92

J'ai le même problème alors je vérifie la recette.

$ brew edit htop

Ensuite, je vérifie cette partie de la recette:

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

Il suffit donc de taper sudo htopet vous verrez CPU et MEM .

Matiskay
la source
18
Vous pouvez utiliser brew info htoppour voir les mises en garde
AB
4
Ceci est utile pour ceux qui ont installé avec macports également; pour moi, je ne sais pas pourquoi, mais ça sudo htopn'a pas marché. htopa été installé dans /bin, alors je serais cdlà et couru chmod 6555 htop && sudo chown root htop. Maintenant htopfonctionne bien.
Brian McCutchon
1
@AB plus maintenant, ils l'ont changé.
Dalibor Filus
4
Cette solution permet à tout utilisateur de tuer les processus de tout autre utilisateur (ou root). Existe-t-il un moyen d'autoriser htop à lire CPU et MEM sans lui permettre de modifier le système?
Max
Si vous voulez modifier htopoù qu'il soit installé, utilisezchmod 6555 "$(which htop)"
BallpointBen le
20

De mon information de brassage:

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

Cela a fonctionné pour m'assurer que je n'ai pas besoin de lancer htop en tant que sudo

Ivan Suftin
la source
6

Voici une alternative pour ceux qui ne veulent pas gâcher avec les permissions tout en évitant de taper sudo htopde préférence, simplement htop:

  1. Installer avec infusion: brew install htop
  2. Autoriser sudo htopà s'exécuter sans mot de passe sudo
    1. Exécuter sudo visudopour ouvrir le fichier sudoers dans un éditeur
    2. Ajoutez ceci au fichier de configuration: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Enregistrez le fichier et quittez ( :wqprobablement)
  3. Ajoutez l’alias suivant à votre fichier rc de shell (l’exemple correspondant à ~/.bashrcou ~/.profile): alias htop='sudo htop'
Sukima
la source
0

Notez que pour que les dernières versions de htop fonctionnent correctement sous OS X, il ne suffit pas de "bénir" htop avec chmod 6555 htopet sudo chown htop- bien que htop s'exécute, la sortie diffère entre htopet sudo htop.

Voici une capture d'écran de l'instance "béni" htop, appelée htop:

entrez la description de l'image ici

et voici une photo de celui-ci en cours d'exécution en tant que sudo htop:

entrez la description de l'image ici

Comme vous pouvez le constater, les non-sudo-invoqués htopaffichent beaucoup moins d'informations.

La réponse correcte a été présentée par @Sukima; il faut malheureusement alias htopto sudo htop. Pour les utilisateurs de la ligne de commande, taper le mot de passe à l'invite est une seconde nature et je pense que pour la plupart d'entre nous, c'est oublier de lancer htopsudo, c'est le problème plutôt que de devoir entrer le mot de passe. Je déconseille vivement de permettre l' sudo htopexécution sans invite de mot de passe, mais si vous le souhaitez, la meilleure approche consiste à autoriser un seul utilisateur nommé à lancer htop (et uniquement htop) sans mot de passe (bien qu'il s'agisse d'une vulnérabilité importante. htop étant puissant et extensible, il peut exécuter des commandes externes, ce qui signifie que celui qui utilise htop comme sudo peut faire n'importe quoi):

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