web-dev-qa-db-fra.com

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

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 aussi 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 CPU et les MEM aren ' t renvoyer 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?

79
Yuan He

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

Donc, tapez simplement Sudo htop et vous verrez CPU et MEM.

92
matiskay

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 que je n'ai pas besoin de lancer htop comme Sudo

19
Ivan Suftin

Voici une alternative pour ceux qui ne veulent pas gâcher avec les permissions tout en évitant de taper Sudo htop plutôt que htop:

  1. Installer avec infusion: brew install htop
  2. Autoriser Sudo htop à s'exécuter sans le mot de passe Sudo
    1. Exécutez Sudo visudo pour 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 (:wq le plus probable)
  3. Ajoutez l'alias suivant à votre fichier rc de shell (exemple: ~/.bashrc ou ~/.profile): alias htop='Sudo htop'
6
Sukima

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 htop et Sudo chown htop - tant que htop s'exécutera, le résultat sera différent entre htop et Sudo htop.

Voici une capture d'écran de l'instance de htop "béni", invoquée sous la forme htop:

enter image description here

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

enter image description here

Comme vous pouvez le constater, la variable htop non invoquée par Sudo affiche beaucoup moins d'informations.

La réponse correcte a été présentée par @Sukima; il faut malheureusement aliaser htop to 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 htop en tant que Sudo, c'est le problème plutôt que de devoir entrer le mot de passe. Je déconseille vivement de permettre à Sudo htop de fonctionner 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 que ce soit un énorme vulnérabilité car htop est puissant et extensible et 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
0
Mahmoud Al-Qudsi