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


80

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

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

Ответы:


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 .


18
Вы можете использовать, brew info htopчтобы увидеть содержание предостережений
AB

4
Это полезно для тех, кто установил с macports; для меня, я не знаю почему, но sudo htopне сработало. htopбыл установлен в /bin, так что я cdтам и побежал chmod 6555 htop && sudo chown root htop. Сейчас htopработает нормально.
Брайан МакКатчон

1
@ АБ больше нет, они изменили это.
Далибор Филус

4
Это решение позволяет любому пользователю уничтожать процессы любого другого пользователя (или пользователя root). Есть ли способ, позволяющий htop читать CPU и MEM, не позволяя изменить систему?
Макс

Если вы хотите изменить htopтам , где он установлен, используйтеchmod 6555 "$(which htop)"
BallpointBen

20

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

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 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

Обратите внимание, что для последних версий 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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.