htop ไม่คืนการใช้งาน CPU หรือหน่วยความจำ!


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เพื่อดูเนื้อหา caveats
AB

4
สิ่งนี้มีประโยชน์สำหรับผู้ที่ติดตั้งกับ macports เช่นกัน สำหรับฉันฉันไม่รู้ว่าทำไม แต่sudo htopไม่ได้ผล htopถูกติดตั้งใน/binดังนั้นฉัน'วันที่และมีการวิ่งcd chmod 6555 htop && sudo chown root htopตอนนี้htopทำงานได้ดี
Brian McCutchon

1
@AB ไม่ได้อีกต่อไปพวกเขาเปลี่ยนมัน
Dalibor Filus

4
วิธีนี้ช่วยให้ผู้ใช้สามารถฆ่ากระบวนการ (หรือรูท) ของผู้ใช้รายอื่น มีวิธีอนุญาตให้ 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. เพิ่มนามแฝงต่อไปนี้ลงในไฟล์ shell rc ของคุณ (ตัวอย่างสำหรับ~/.bashrcหรือ~/.profile): alias htop='sudo htop'

0

โปรดทราบว่าสำหรับรุ่นล่าสุดของ htop ทำงานอย่างถูกต้องบน OS X ก็ไม่เพียงพอที่จะ "อวยพร" htop ด้วยchmod 6555 htopและsudo chown htop- ในขณะที่ htop จะวิ่งออกจะแตกต่างกันระหว่างและhtopsudo htop

ต่อไปนี้เป็นภาพหน้าจอของอินสแตนซ์ htop "blessed" ที่เรียกใช้htopดังนี้

ป้อนคำอธิบายรูปภาพที่นี่

และนี่คือภาพของมันทำงานเป็นsudo htop:

ป้อนคำอธิบายรูปภาพที่นี่

อย่างที่คุณเห็น non-sudo-invoked 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.