Htop không trả lại CPU hoặc sử dụng bộ nhớ!?


80

Tôi nghĩ rằng top là ứng dụng tuyệt vời để giám sát một hệ thống Linux. Tôi thực sự thích nó, nhưng top không đẹp lắm trên Mac. Tôi biết rằng Mac có một màn hình hệ thống để làm việc đó, nhưng tôi thích sử dụng thiết bị đầu cuối hơn.

Tôi đã cài đặt htop bằng cách chạy:

brew install htop.

Đây là những gì nó trông giống như:

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)

Vấn đề là cả CPUMEM đều không trả về giá trị thực của hệ thống của tôi.

Đã có ai thử điều này chưa? Hoặc, một số người có thể chỉ cho tôi đi đúng hướng?

Câu trả lời:


92

Tôi có cùng một vấn đề vì vậy tôi kiểm tra công thức.

$ brew edit htop

Sau đó, tôi kiểm tra phần này của công thức:

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

Vì vậy, chỉ cần gõ sudo htopvà bạn sẽ thấy CPUMEM .


18
Bạn có thể sử dụng brew info htopđể xem nội dung hãy cẩn thận
AB

4
Điều này cũng hữu ích cho những người cài đặt macports; Đối với tôi, tôi không biết tại sao, nhưng sudo htopkhông làm việc. htopđã được cài đặt /bin, vì vậy tôi cdở đó và chạy chmod 6555 htop && sudo chown root htop. Bây giờ htophoạt động tốt.
Brian McCutchon

1
@AB không còn nữa, họ đã thay đổi nó.
Dalibor Filus

4
Giải pháp này cho phép bất kỳ người dùng nào giết bất kỳ quy trình (hoặc root) nào của người dùng khác. Có cách nào để cho phép htop đọc CPU và MEM mà không cho phép nó sửa đổi hệ thống không?
Tối đa

Nếu bạn muốn sửa đổi htopbất cứ nơi nào nó được cài đặt, hãy sử dụngchmod 6555 "$(which htop)"
BallpointBen

20

Từ thông tin sản xuất bia của tôi:

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

Điều này hoạt động để đảm bảo rằng tôi không cần phải chạy htop như sudo


6

Đây là một giải pháp thay thế cho những người không muốn làm phiền với các quyền và vẫn tránh gõ sudo htoptheo sở thích chỉ htop:

  1. Cài đặt với brew: brew install htop
  2. Cho phép sudo htopchạy mà không cần mật khẩu sudo
    1. Chạy sudo visudođể mở tệp sudoers trong trình chỉnh sửa
    2. Thêm phần này vào tập tin cấu hình: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Lưu tệp và thoát ( :wqrất có thể)
  3. Thêm bí danh sau vào tệp RC shell của bạn (ví dụ là cho ~/.bashrchoặc ~/.profile): alias htop='sudo htop'

0

Lưu ý rằng để các phiên bản mới nhất của htop hoạt động chính xác trên OS X, không đủ để "ban phước" cho htop với chmod 6555 htopsudo chown htop- trong khi htop sẽ chạy, đầu ra sẽ khác nhau giữa htopsudo htop.

Đây là một ảnh chụp màn hình của trường hợp htop "may mắn", được gọi là htop:

nhập mô tả hình ảnh ở đây

và đây là một hình ảnh của nó đang chạy như sudo htopsau:

nhập mô tả hình ảnh ở đây

Như bạn có thể thấy, phần mềm không được gọi htopsẽ hiển thị ít thông tin hơn đáng kể.

Câu trả lời đúng được trình bày bởi @Sukima; nó được may cần thiết để bí danh htopđể sudo htop. Đối với người dùng dòng lệnh, nhập mật khẩu tại dấu nhắc là bản chất thứ hai và tôi nghĩ rằng đối với hầu hết chúng ta, việc quên khởi chạy htoplà sudo đó là vấn đề thay vì bắt buộc phải nhập mật khẩu. Tôi đặc biệt khuyên bạn không nên sudo htopchạy mà không có lời nhắc mật khẩu, nhưng nếu bạn muốn làm như vậy, cách tiếp cận tốt nhất là cho phép một người dùng duy nhất, có tên khởi chạy htop (và chỉ htop) mà không cần mật khẩu (mặc dù đây là một lỗ hổng lớn vì htop rất mạnh và có thể mở rộng và có thể chạy các lệnh bên ngoài, điều đó có nghĩa là bất cứ ai chạy htop như sudo đều có thể làm bất cứ điều gì):

sudo visudo
# add the line below somewhere in the editor
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/htop
# save and exit
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.