htop tidak mengembalikan CPU atau penggunaan memori !?

80

Saya pikir top adalah aplikasi hebat untuk memonitor sistem Linux. Saya sangat menyukainya, tetapi top tidak terlihat bagus di Mac. Saya tahu bahwa Mac memiliki monitor sistem untuk melakukannya, tetapi saya lebih suka menggunakan terminal.

Saya telah menginstal htop dengan menjalankan:

brew install htop.

Berikut ini tampilannya:

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)

Masalahnya adalah bahwa baik CPU dan MEM tidak mengembalikan nilai sebenarnya dari sistem saya.

Adakah orang lain yang mengalami ini? Atau, bisakah seseorang mengarahkan saya ke arah yang benar?

Yuan He
sumber

Jawaban:

92

Saya memiliki masalah yang sama jadi saya memeriksa resepnya.

$ brew edit htop

Lalu saya periksa bagian resep ini:

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

Jadi ketik saja sudo htopdan Anda akan melihat CPU dan MEM .

matiskay
sumber
18
Anda dapat menggunakan brew info htopuntuk melihat konten peringatan
AB
4
Ini bermanfaat bagi mereka yang menginstal dengan macports juga; bagi saya, saya tidak tahu mengapa, tetapi sudo htoptidak berhasil. htopdipasang /bin, jadi saya di cdsana dan berlari chmod 6555 htop && sudo chown root htop. Sekarang htopberfungsi dengan baik.
Brian McCutchon
1
@ AB tidak lagi, mereka mengubahnya.
Dalibor Filus
4
Solusi ini memungkinkan setiap pengguna untuk membunuh proses pengguna lain (atau root). Apakah ada cara untuk memungkinkan htop membaca CPU dan MEM tanpa mengizinkannya memodifikasi sistem?
Maks
Jika Anda ingin memodifikasi htopdimanapun diinstal, gunakanchmod 6555 "$(which htop)"
BallpointBen
20

Dari info minuman saya:

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

Ini berfungsi untuk memastikan bahwa saya tidak perlu menjalankan htop sebagai sudo

Ivan Suftin
sumber
6

Berikut adalah alternatif bagi mereka yang tidak ingin mengotori dengan izin dan masih menghindari mengetikkan sudo htoppreferensi hanya htop:

  1. Instal dengan minuman: brew install htop
  2. Izinkan sudo htopuntuk berjalan tanpa kata sandi sudo
    1. Jalankan sudo visudountuk membuka file sudoers di editor
    2. Tambahkan ini ke file konfigurasi: %admin ALL=(ALL) NOPASSWD: /usr/local/bin/htop
    3. Simpan file dan keluar ( :wqkemungkinan besar)
  3. Tambahkan alias berikut ke file rc shell Anda (misalnya untuk ~/.bashrcatau ~/.profile): alias htop='sudo htop'
Sukima
sumber
0

Perhatikan bahwa untuk versi terbaru htop berfungsi dengan benar pada OS X, tidak cukup untuk "memberkati" htop dengan chmod 6555 htopdan sudo chown htop- sementara htop akan berjalan, output akan berbeda antara htopdan sudo htop.

Berikut screenshot dari contoh htop "blessed", dipanggil sebagai htop:

masukkan deskripsi gambar di sini

dan inilah gambar yang berfungsi sebagai sudo htop:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, non-sudo-invoked htopmenampilkan informasi yang jauh lebih sedikit.

Jawaban yang benar disampaikan oleh @Sukima; sayangnya diperlukan untuk alias htopke sudo htop. Untuk pengguna baris perintah, mengetikkan kata sandi pada prompt adalah kebiasaan dan saya pikir bagi sebagian besar dari kita lupa untuk meluncurkan htopsebagai sudo yang merupakan masalah daripada diminta untuk mengetikkan kata sandi. Saya sangat menyarankan sudo htopuntuk tidak menjalankan tanpa prompt kata sandi, tetapi jika Anda memang ingin melakukannya, pendekatan terbaik adalah dengan mengizinkan pengguna tunggal bernama untuk meluncurkan htop (dan hanya htop) tanpa kata sandi (meskipun ini adalah kerentanan besar karena htop kuat dan dapat dikembangkan dan dapat menjalankan perintah eksternal, yang berarti siapa pun yang menjalankan htop seperti sudo dapat melakukan apa saja):

sudo visudo
# add the line below somewhere in the editor
YOURUSERNAME ALL=(ALL) NOPASSWD: /usr/local/bin/htop
# save and exit
Mahmoud Al-Qudsi
sumber