htop不会返回CPU或内存使用率!?


80

我认为最重要的是监视Linux系统的出色应用程序。我真的很喜欢,但是top在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)

问题是CPUMEM都没有返回我系统上任何一个的真实值。

其他人有没有经历过?或者,有人可以指出我正确的方向吗?

Answers:


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,您将看到CPUMEM


18
您可以brew info htop用来查看警告内容
AB

4
这对于那些同时安装了macports的人也很有帮助。对我来说,我不知道为什么,但是sudo htop没有用。htop被安装在里面/bin,所以我去cd那里跑了chmod 6555 htop && sudo chown root htop。现在htop工作正常。
Brian McCutchon 2014年

1
@AB不再了,他们更改了它。
Dalibor Filus 2015年

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优先输入just的人来说,这是另一种选择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. 将以下别名添加到您的Shell rc文件中(示例用于~/.bashrc~/.profile): alias htop='sudo htop'

0

请注意,要使htop的最新版本在OS X上正常运行,仅用chmod 6555 htop和保佑htop是不够的sudo chown htop-当htop运行时,输出将在htop和之间有所不同sudo htop

这是“祝福”的htop实例的屏幕截图,其调用方式为htop

在此处输入图片说明

这是它运行的图片sudo htop

在此处输入图片说明

如您所见,非sudo调用htop显示的信息要少得多。

正确答案由@Sukima提出;不幸的是,需要别名htopsudo htop。对于命令行用户,在提示符下输入密码是第二天性,我认为对于我们大多数人来说,忘记了以htopsudo开头是问题所在,而不是要求输入密码。我强烈建议sudo htop您不要在没有密码提示的情况下运行,但是,如果您希望这样做,最好的方法是允许单个指定用户在没有密码的情况下启动htop(并且只有htop)(尽管这是一个巨大的漏洞)由于htop功能强大且可扩展,并且可以运行外部命令,因此以sudo身份运行htop的人可以执行任何操作):

sudo visudo
# add the line below somewhere in the editor
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/htop
# save and exit
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.