78

Я думаю, что top - отличное приложение для мониторинга системы Linux. Мне действительно это нравится, но топ не выглядит так хорошо на Mac. Я знаю, что у Mac есть системный монитор, но я предпочитаю использовать терминал.

Я установил htop , запустив:

brew install htop .

Вот как это выглядит:

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)

Проблема в том, что и CPU, и MEM не возвращают реальные значения ни в моей системе.

Кто-нибудь еще испытывал это? Или кто-то может направить меня в правильном направлении?

4 ответа4

92

У меня та же проблема, поэтому я проверяю рецепт.

$ brew edit htop

Затем я проверяю эту часть рецепта:

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

Просто введите sudo htop и вы увидите CPU и MEM.

19

Из моей информации о вареве:

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

Это работает, чтобы убедиться, что мне не нужно запускать htop как sudo

6

Вот альтернатива для тех, кто не хочет копаться в разрешениях и все же избегает ввода sudo htop вместо предпочтения htop:

  1. Установить с помощью brew: brew install htop
  2. Разрешить запуск sudo htop без пароля sudo
    1. Запустите sudo visudo чтобы открыть файл sudoers в редакторе
    2. Добавьте это в файл конфигурации: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Сохраните файл и выйдите (:wq скорее всего)
  3. Добавьте следующий псевдоним в rc-файл оболочки (например, для ~/.bashrc или ~/.profile): alias htop='sudo htop'
0

Обратите внимание, что для правильной работы последних версий htop в OS X недостаточно "благословить" htop с помощью chmod 6555 htop и sudo chown htop - при запуске htop выходные данные htop и sudo htop будут отличаться.

Вот скриншот "благословенного" экземпляра htop, вызванного как htop:

и вот изображение этого работает как sudo htop:

Как видите, htop вызова sudo отображает значительно меньше информации.

Правильный ответ был представлен @Sukima; к сожалению требуется псевдоним htop для sudo htop . Для пользователей командной строки ввод пароля в командной строке является второй натурой, и я думаю, что для большинства из нас забывают запустить htop как sudo, что является проблемой, а не обязательным вводом пароля. Я настоятельно не рекомендую запускать sudo htop без запроса пароля, но если вы хотите это сделать, лучший способ - разрешить одному именованному пользователю запускать htop (и только htop) без пароля (хотя это Огромная уязвимость, поскольку htop является мощным и расширяемым и может запускать внешние команды, что означает, что тот, кто запускает htop от имени sudo, может делать все что угодно):

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .