htop не возвращает процессор или использование памяти !?

13695
Yuan He

Я думаю, что 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 не возвращают реальные значения ни в моей системе.

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

79

4 ответа на вопрос

93
matiskay

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

$ 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 # chmod 6555 htop sudo chown root htop EOS 

Так что просто введите sudo htopи вы увидите CPU и MEM .

Вы можете использовать `brew info htop` для просмотра содержимого предупреждений. A B 11 лет назад 18
Это полезно для тех, кто установил с macports; для меня, я не знаю почему, но `sudo htop` не сработал. `htop` был установлен в` / bin`, поэтому я `cd`'d там и запустил` chmod 6555 htop && sudo chown root htop`. Теперь `htop` работает отлично. Brian McCutchon 10 лет назад 4
@ АБ больше нет, они изменили это. Dalibor Filus 9 лет назад 1
Это решение позволяет любому пользователю уничтожать процессы любого другого пользователя (или пользователя root). Есть ли способ разрешить htop * читать * CPU и MEM, не позволяя ему изменять систему? Max 9 лет назад 4
Если вы хотите изменить `htop` везде, где он установлен, используйте` chmod 6555 "$ (which htop)" ` BallpointBen 7 лет назад 0
19
Ivan Suftin

From my brew info:

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 

This worked to ensure that I don't need to run htop as sudo

6
Sukima

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

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

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

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

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

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

Правильный ответ был представлен @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