LFCS Monitor Linux Proses Penggunaan Sumber Daya dan Menetapkan Batas Proses berdasarkan Per -Pengguna - Bagian 14
- 4257
- 407
- Jermaine Mohr
Karena modifikasi terbaru dalam tujuan ujian sertifikasi LFCS yang efektif dari 2 Februari 2016, Kami menambahkan artikel yang diperlukan ke seri LFCS yang diterbitkan di sini. Untuk mempersiapkan ujian ini, Anda juga sangat dianjurkan untuk melalui seri LFCE juga.
Monitor proses Linux dan atur batas proses per pengguna - Bagian 14Setiap administrator sistem Linux perlu tahu cara memverifikasi integritas dan ketersediaan perangkat keras, sumber daya, dan proses utama. Selain itu, menetapkan batas sumber daya berdasarkan per pengguna juga harus menjadi bagian dari keahliannya.
Dalam artikel ini kita akan mengeksplorasi beberapa cara untuk memastikan bahwa sistem baik perangkat keras dan perangkat lunak berperilaku dengan benar untuk menghindari masalah potensial yang dapat menyebabkan downtime produksi dan kehilangan uang yang tidak terduga.
Statistik Prosesor Pelaporan Linux
Dengan mpstat Anda dapat melihat aktivitas untuk setiap prosesor secara individual atau sistem secara keseluruhan, baik sebagai snapshot satu kali atau secara dinamis.
Untuk menggunakan alat ini, Anda harus menginstal Sysstat:
# yum update && yum menginstal sysstat [on Centos Sistem Berbasis] # Pembaruan APTItutDe && Aptitude Instal Sysstat [ON Ubuntu sistem berbasis] # pembaruan zypper && zypper install sysstat [on OpenSuse sistem]
Baca lebih lanjut tentang Sysstat Dan itu adalah utilitas di belajar sysstat dan utilitas mpstat, pidstat, iostat dan sar di linux
Setelah Anda menginstal mpstat, Gunakan untuk menghasilkan laporan statistik prosesor.
Menampilkan 3 Laporan global pemanfaatan CPU (-u
) untuk semua CPU (seperti yang ditunjukkan oleh -P
Semua) pada interval 2 detik, lakukan:
# mpstat -p all -u 2 3
Output sampel
Linux 3.19.0-32-generic (tecmint.com) Rabu 30 Maret 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU %USR %bagus %sys %iowait %irq %soft %steal %tamu %gnice %idle 11:41:09 ist all all 5 5 5 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %USR %NICE %SYS %Iowait %Irq %Soft %mencuri %tamu %gnice %idle 11:41:11 IS semua 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %USR %bagus %sys %iowait %irq %lunak %mencuri %tamu %gnice %idle 11:41:13 IS semua 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 92.57 Rata -rata: CPU %USR %Nice %SYS %Iowait %Irq %Soft %mencuri %tamu %gnice %idle rata -rata: Semua 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 rata -rata: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 rata -rata: 1 9.24 0.00 1.16 0.83 0.00 0.00 0.00 0.00 0.00 88.78 rata -rata: 2 3.49 0.17 1.00 0.00 0.00 0.00 0.00 0.00 0.00 95.35 rata -rata: 3 12.25 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 86.59
Untuk melihat statistik yang sama untuk spesifik CPU (CPU 0 Dalam contoh berikut), gunakan:
# mpstat -p 0 -u 2 3
Output sampel
Linux 3.19.0-32-generic (tecmint.com) Rabu 30 Maret 2016 _x86_64_ (4 CPU) 11:42:08 IST CPU %USR %bagus %sys %iowait %irq %soft %steal %tamu %gnice %idle 11:42:10 IST 0 3.00 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:42:12 IST 0 4.08 0.00 0.00 2.55 0.00 0.00 0.00 0.00 0.00 93.37 11:42:14 IST 0 9.74 0.00 0.51 0.00 0.00 0.00 0.00 0.00 0.00 89.74 rata -rata: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23
Output dari perintah di atas menunjukkan kolom ini:
CPU
: Nomor prosesor sebagai bilangan bulat, atau kata semua sebagai rata -rata untuk semua prosesor.%USR
: Persentase pemanfaatan CPU saat menjalankan aplikasi tingkat pengguna.%Bagus
: Sama dengan%USR
, Tapi dengan prioritas yang bagus.%sys
: Persentase pemanfaatan CPU yang terjadi saat menjalankan aplikasi kernel. Ini tidak termasuk waktu yang dihabiskan untuk menangani interupsi atau menangani perangkat keras.%Iowait
: Persentase waktu ketika CPU yang diberikan (atau semua) menganggur, di mana ada operasi I/O intensif sumber daya yang dijadwalkan pada CPU itu. Penjelasan yang lebih rinci (dengan contoh) dapat ditemukan di sini.%irq
: Persentase waktu yang dihabiskan untuk melayani perangkat keras interupsi.%lembut
: Sama dengan%irq
, tetapi dengan interupsi perangkat lunak.%mencuri
: Persentase waktu yang dihabiskan untuk menunggu tanpa disengaja (mencuri atau waktu curian) ketika mesin virtual, sebagai tamu, adalah "memenangkan" perhatian hypervisor saat bersaing untuk CPU (s). Nilai ini harus dijaga sekecil mungkin. Nilai tinggi di bidang ini berarti mesin virtual macet - atau segera.%tamu
: Persentase waktu yang dihabiskan menjalankan prosesor virtual.%menganggur
: Persentase waktu ketika CPU tidak menjalankan tugas apa pun. Jika Anda mengamati nilai rendah di kolom ini, itu adalah indikasi sistem yang ditempatkan di bawah beban berat. Dalam hal ini, Anda perlu melihat lebih dekat pada daftar proses, seperti yang akan kita bahas dalam satu menit, untuk menentukan apa yang menyebabkannya.
Untuk menempatkan tempat prosesor di bawah beban yang agak tinggi, jalankan perintah berikut dan kemudian jalankan MPSTAT (seperti yang ditunjukkan) di terminal terpisah:
# dd if =/dev/nol of = tes.iso bs = 1g count = 1 # mpstat -u -p 0 2 3 # ping -f localhost # interupsi dengan ctrl + c setelah mpstat di bawah ini menyelesaikan # mpstat -u -p 0 2 3
Akhirnya, bandingkan dengan output mpstat Dalam keadaan "normal":
Laporkan Prosesor Linux Statistik TerkaitSeperti yang dapat Anda lihat pada gambar di atas, CPU 0 berada di bawah beban berat selama dua contoh pertama, seperti yang ditunjukkan oleh %menganggur
kolom.
Di bagian selanjutnya kita akan membahas cara mengidentifikasi proses haus sumber daya ini, bagaimana mendapatkan informasi lebih lanjut tentang mereka, dan bagaimana mengambil tindakan yang sesuai.
Melaporkan proses Linux
Untuk daftar proses menyortirnya berdasarkan penggunaan CPU, kami akan menggunakan yang terkenal ps
Perintah dengan -eo
(untuk memilih semua proses dengan format yang ditentukan pengguna) dan --menyortir
(Untuk menentukan opsi pemesanan penyortiran khusus), seperti itu:
# PS -EO PID, PPID, CMD,%CPU,%MEM --Sort = -%CPU
Perintah di atas hanya akan menampilkan Pid
, PPID
, Perintah yang terkait dengan proses, dan persentase penggunaan CPU dan RAM diurutkan berdasarkan persentase penggunaan CPU dalam urutan menurun. Saat dieksekusi selama pembuatan .iso File, inilah beberapa baris pertama dari output:
Setelah kami mengidentifikasi proses yang diminati (seperti yang terjadi PID = 2822
), kita dapat menavigasi /proc/pid
(/proc/2822
dalam hal ini) dan lakukan daftar direktori.
Direktori ini adalah tempat beberapa file dan subdirektori dengan informasi terperinci tentang proses khusus ini disimpan saat sedang berjalan.
Misalnya:
/proc/2822/io
Berisi statistik IO untuk proses (jumlah karakter dan byte dibaca dan ditulis, antara lain, selama operasi IO)./proc/2822/attr/arus
menunjukkan atribut keamanan selinux saat ini dari proses./proc/2822/cgroup
Menjelaskan grup kontrol (CGROUPS singkatnya) yang menjadi milik proses jika opsi konfigurasi kernel konfigurasi konfigurasi diaktifkan, yang dapat Anda verifikasi dengan:
# cat /boot /config -$ (uname -r) | grep -i cgroups
Jika opsi diaktifkan, Anda akan melihat:
Config_cgroups = y
Menggunakan cgroup
Anda dapat mengelola jumlah penggunaan sumber daya yang diizinkan berdasarkan per-proses seperti yang dijelaskan dalam Bab 1 hingga 4 Panduan Manajemen Sumber Daya Red Hat Enterprise Linux 7, dalam Bab 9 dari Analisis Sistem OpenSUSE dan Panduan Penyetelan, dan dalam kelompok kontrol Bagian dari Ubuntu 14.04 Dokumentasi Server.
Itu /proc/2822/fd
adalah direktori yang berisi satu tautan simbolik untuk setiap deskriptor file proses telah dibuka. Gambar berikut menunjukkan informasi ini untuk proses yang dimulai di TTY1 (terminal pertama) untuk membuat .iso gambar:
Gambar di atas menunjukkan itu Stdin (Deskriptor File 0), stdout (Deskriptor File 1), Dan Stderr (Deskriptor File 2) dipetakan ke /dev/nol, /root/tes.iso, Dan /dev/tty1, masing -masing.
Informasi lebih lanjut tentang /Proc
dapat ditemukan di “ /Proc
Dokumen FileStem ”disimpan dan dikelola oleh kernel.org, dan dalam manual programmer linux.
Menetapkan Batas Sumber Daya berdasarkan Per-Pengguna di Linux
Jika Anda tidak hati -hati dan mengizinkan pengguna untuk menjalankan sejumlah proses yang tidak terbatas, Anda pada akhirnya dapat mengalami shutdown sistem yang tidak terduga atau dikunci saat sistem memasuki keadaan yang tidak dapat digunakan. Untuk mencegah hal ini terjadi, Anda harus membatasi jumlah proses yang dapat dimulai oleh pengguna.
Untuk melakukan ini, edit /etc/keamanan/batasan.conf dan tambahkan baris berikut di bagian bawah file untuk mengatur batas:
* NPROC Hard 10
Bidang pertama dapat digunakan untuk menunjukkan pengguna, grup, atau semuanya (*)
, Sedangkan bidang kedua menegakkan batas keras pada jumlah proses (NPROC) untuk 10. Untuk menerapkan perubahan, keluar dan kembali sudah cukup.
Jadi, mari kita lihat apa yang terjadi jika pengguna tertentu selain root (baik yang sah atau tidak) mencoba untuk memulai bom garpu shell. Jika kami belum menerapkan batasan, ini awalnya akan meluncurkan dua contoh fungsi, dan kemudian menduplikasi masing -masing dalam loop yang tidak pernah berakhir. Dengan demikian, pada akhirnya akan membawa sistem Anda merangkak.
Namun, dengan batasan di atas, bom garpu tidak berhasil tetapi pengguna masih akan dikunci sampai administrator sistem membunuh proses yang terkait dengannya:
Jalankan Bom Shell ForkTIP: Pembatasan lain yang mungkin dimungkinkan oleh Ulimit didokumentasikan di batas.conf
mengajukan.
Linux Alat Manajemen Proses Lainnya
Selain alat yang dibahas sebelumnya, administrator sistem mungkin juga perlu:
A) Ubah Prioritas Eksekusi (Penggunaan Sumber Daya Sistem) dari suatu proses menggunakan Renice. Ini berarti bahwa kernel akan mengalokasikan lebih atau kurang sumber daya sistem untuk proses berdasarkan prioritas yang ditugaskan (angka yang biasa dikenal sebagai “kebaikan”Dalam kisaran dari -20
ke 19
).
Semakin rendah nilainya, semakin besar prioritas eksekusi. Pengguna reguler (selain root) hanya dapat memodifikasi kebaikan proses yang mereka miliki dengan nilai yang lebih tinggi (artinya prioritas eksekusi yang lebih rendah), sedangkan root dapat memodifikasi nilai ini untuk proses apa pun, dan dapat meningkatkan atau menguranginya.
Sintaks dasar Renice adalah sebagai berikut:
# Renice [-n] Identifier
Jika argumen setelah nilai prioritas baru tidak ada (kosong), diatur ke PID secara default. Dalam hal ini, kebaikan proses dengan PID = Identifier diatur ke .
B) Mengganggu eksekusi normal suatu proses saat dibutuhkan. Ini umumnya dikenal sebagai "membunuh" proses. Di bawah kap, ini berarti mengirimkan proses sinyal untuk menyelesaikan eksekusi dengan benar dan melepaskan sumber daya bekas dengan cara yang tertib.
Untuk membunuh suatu proses, gunakan membunuh Perintah sebagai berikut:
# Bunuh Pid
Atau, Anda dapat menggunakan pkill untuk menghentikan semua proses pemilik yang diberikan (-u)
, atau pemilik kelompok (-G)
, atau bahkan proses yang memiliki PPID kesamaan (-P)
. Opsi -opsi ini dapat diikuti oleh representasi numerik atau nama aktual sebagai pengidentifikasi:
# PKILL [Opsi] Identifier
Misalnya,
# pkill -g 1000
akan membunuh semua proses yang dimiliki oleh kelompok dengan GID = 1000.
Dan,
# pkill -p 4993
akan membunuh semua proses yang PPID siapa 4993.
Sebelum menjalankan a pkill, Ide yang bagus untuk menguji hasilnya pgrep Pertama, mungkin menggunakan -l
Opsi juga untuk mencantumkan nama proses. Dibutuhkan opsi yang sama tetapi hanya mengembalikan pids proses (tanpa mengambil tindakan lebih lanjut) yang akan dibunuh jika pkill digunakan.
# pgrep -l -u gacanepa
Ini diilustrasikan pada gambar berikutnya:
Temukan proses yang menjalankan pengguna di LinuxRingkasan
Dalam artikel ini kami telah mengeksplorasi beberapa cara untuk memantau penggunaan sumber daya untuk memverifikasi integritas dan ketersediaan komponen perangkat keras dan perangkat lunak kritis dalam sistem Linux.
Kami juga telah belajar bagaimana mengambil tindakan yang tepat (baik dengan menyesuaikan prioritas eksekusi dari suatu proses yang diberikan atau dengan mengakhirinya) dalam keadaan yang tidak biasa.
Kami berharap konsep yang dijelaskan dalam tutorial ini sangat membantu. Jika Anda memiliki pertanyaan atau komentar, jangan ragu untuk menghubungi kami menggunakan formulir kontak di bawah ini.
Menjadi Administrator Sistem Bersertifikat Linux- « Cara Mengubah Parameter Runtime Kernel dengan cara yang persisten dan tidak ada
- LFCS Cara menjelajahi Linux dengan dokumentasi dan alat bantuan yang diinstal - Bagian 12 »