LFCS Monitor Linux Proses Penggunaan Sumber dan Tetapkan Had Proses secara Per -User - Bahagian 14

LFCS Monitor Linux Proses Penggunaan Sumber dan Tetapkan Had Proses secara Per -User - Bahagian 14

Oleh kerana pengubahsuaian baru -baru ini dalam objektif peperiksaan pensijilan LFCS berkesan dari 2 Februari 2016, Kami menambah artikel yang diperlukan untuk siri LFCS yang diterbitkan di sini. Untuk mempersiapkan peperiksaan ini, anda sangat digalakkan untuk meneruskan siri LFCE juga.

Pantau proses Linux dan tetapkan had proses setiap pengguna - Bahagian 14

Setiap Pentadbir Sistem Linux Perlu Mengetahui Cara Mengesahkan Integriti dan Ketersediaan Perkakasan, Sumber, dan Proses Utama. Di samping itu, menetapkan had sumber secara per-pengguna juga mesti menjadi sebahagian daripada set kemahirannya.

Dalam artikel ini, kami akan meneroka beberapa cara untuk memastikan bahawa sistem kedua -dua perkakasan dan perisian bertindak dengan betul untuk mengelakkan isu -isu yang berpotensi yang boleh menyebabkan downtime pengeluaran yang tidak dijangka dan kehilangan wang.

Statistik pemproses pelaporan linux

Dengan mpstat Anda boleh melihat aktiviti untuk setiap pemproses secara individu atau sistem secara keseluruhan, baik sebagai satu kali gambaran atau secara dinamik.

Untuk menggunakan alat ini, anda perlu memasang Sysstat:

# yum kemas kini && yum pasang sysstat [on Centos sistem berasaskan] # aptitutde update & & aptitude memasang sysstat [on Ubuntu sistem berasaskan] # zypper kemas kini && zypper Pasang sysstat [on opensuse sistem] 

Baca lebih lanjut mengenai Sysstat Dan ia adalah utiliti di SYSSTAT dan utiliti MPSTAT, PIDSTAT, IOSTAT dan SAR di Linux

Sebaik sahaja anda memasang mpstat, Gunakannya untuk menghasilkan laporan statistik pemproses.

Untuk mempamerkan 3 Laporan Global Penggunaan CPU (-u) untuk semua CPU (seperti yang ditunjukkan oleh -P Semua) pada selang 2 saat, lakukan:

# mpstat -p all -u 2 3 
Output sampel
Linux 3.19.0-32-generik (Tecmint.com) Rabu 30 Mac 2016 _x86_64_ (4 cpu) 11:41:07 IST CPU %usr %Nice %sys %Iowait %irq %soft %mencuri %tetamu %gnice %idle 11:41:09 ist semua 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 %tetamu %gnice %idle 11:41:11 ist 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 %Nice %sys %Iowait %irq %soft %mencuri %tetamu %gnice %idle 11:41:13 ist 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 %Guest %Gnice %Idle Purata: Semua 7.71 0.04 1.16 0.21 0.00 0.00 0.00 0.00 0.00 90.89 Purata: 0 5.97 0.00 1.16 0.00 0.00 0.00 0.00 0.00 0.00 92.87 Purata: 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 Purata: 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 yang spesifik CPU (CPU 0 Dalam contoh berikut), gunakan:

# mpstat -p 0 -u 2 3 
Output sampel
Linux 3.19.0-32-generik (Tecmint.com) Rabu 30 Mac 2016 _x86_64_ (4 cpu) 11:42:08 IST CPU %usr %Nice %sys %Iowait %irq %soft %mencuri %tetamu %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 Purata: 0 5.58 0.00 0.34 0.85 0.00 0.00 0.00 0.00 0.00 93.23 

Output arahan di atas menunjukkan lajur ini:

  1. CPU: Nombor pemproses sebagai integer, atau perkataan semua sebagai purata bagi semua pemproses.
  2. %usr: Peratusan penggunaan CPU semasa menjalankan aplikasi peringkat pengguna.
  3. %bagus: Sama seperti %usr, Tetapi dengan keutamaan.
  4. %sys: Peratusan penggunaan CPU yang berlaku semasa melaksanakan aplikasi kernel. Ini tidak termasuk masa yang dihabiskan untuk menangani masalah perkakasan atau pengendalian.
  5. %Iowait: Peratusan masa apabila CPU (atau semua) yang diberikan adalah sia-sia, di mana terdapat operasi I/O yang berintensifkan sumber yang dijadualkan pada CPU tersebut. Penjelasan yang lebih terperinci (dengan contoh) boleh didapati di sini.
  6. %IRQ: Peratusan masa yang dihabiskan untuk servis perkakasan mengganggu.
  7. %lembut: Sama seperti %IRQ, Tetapi dengan perisian mengganggu.
  8. %Mencuri: Peratusan masa yang dibelanjakan untuk menunggu secara sukarela (mencuri atau mencuri masa) apabila mesin maya, sebagai tetamu, "memenangi" perhatian hypervisor semasa bersaing untuk CPU (s). Nilai ini harus disimpan sekecil mungkin. Nilai tinggi dalam bidang ini bermaksud mesin maya terhenti - atau tidak lama lagi.
  9. %Tetamu: Peratusan masa yang dihabiskan untuk menjalankan pemproses maya.
  10. %terbiar: Peratusan masa ketika CPU (s) tidak melaksanakan tugas. Sekiranya anda melihat nilai yang rendah dalam lajur ini, itu merupakan petunjuk sistem yang diletakkan di bawah beban berat. Dalam hal ini, anda perlu melihat dengan lebih dekat senarai proses, seperti yang akan kita bincangkan dalam satu minit, untuk menentukan apa yang menyebabkannya.

Untuk meletakkan tempat pemproses di bawah beban yang agak tinggi, jalankan arahan berikut dan kemudian laksanakan MPSTAT (seperti yang ditunjukkan) di terminal yang berasingan:

# dd jika =/dev/sifar = ujian.ISO BS = 1g Count = 1 # mpstat -u -p 0 2 3 # ping -f localhost # mengganggu dengan ctrl + c selepas mpstat di bawah melengkapkan # mpstat -u -p 0 2 3 

Akhirnya, bandingkan dengan output mpstat Di bawah keadaan "normal":

Laporkan statistik berkaitan pemproses Linux

Seperti yang anda lihat dalam gambar di atas, CPU 0 berada di bawah beban berat semasa dua contoh pertama, seperti yang ditunjukkan oleh %terbiar kolum.

Di bahagian seterusnya kita akan membincangkan cara mengenal pasti proses yang lapar sumber ini, bagaimana mendapatkan lebih banyak maklumat mengenai mereka, dan bagaimana untuk mengambil tindakan yang sesuai.

Melaporkan proses Linux

Untuk menyenaraikan proses menyusunnya dengan penggunaan CPU, kami akan menggunakan yang terkenal ps perintah dengan -eo (untuk memilih semua proses dengan format yang ditentukan pengguna) dan --menyusun (untuk menentukan pilihan penyortiran tersuai), seperti itu:

# PS -EO PID, PPID, CMD,%CPU,%Mem -Sort = -%CPU 

Perintah di atas hanya akan menunjukkan Pid, Ppid, Perintah yang berkaitan dengan proses, dan peratusan penggunaan CPU dan RAM yang disusun mengikut peratusan penggunaan CPU dalam urutan menurun. Semasa dilaksanakan semasa penciptaan .ISO fail, inilah beberapa baris pertama output:

Cari proses Linux dengan penggunaan CPU

Sebaik sahaja kita telah mengenal pasti proses minat (seperti yang ada PID = 2822), kita boleh menavigasi ke /Proc/PID (/Proc/2822 dalam kes ini) dan buat penyenaraian direktori.

Direktori ini adalah di mana beberapa fail dan subdirektori dengan maklumat terperinci mengenai proses tertentu ini disimpan semasa ia berjalan.

Sebagai contoh:
  1. /Proc/2822/io Mengandungi statistik IO untuk proses (bilangan aksara dan bait yang dibaca dan ditulis, antara lain, semasa operasi IO).
  2. /Proc/2822/attr/arus menunjukkan sifat keselamatan selinux semasa proses.
  3. /Proc/2822/cgroup Menggambarkan kumpulan kawalan (cgroups untuk pendek) yang mana proses itu dimiliki jika pilihan konfigurasi kernel config_cgroups diaktifkan, yang boleh anda sahkan dengan:
# kucing /boot /config -$ (uname -r) | grep -i cgroups 

Sekiranya pilihan diaktifkan, anda harus melihat:

Config_cgroups = y 

Menggunakan cgroups Anda boleh menguruskan jumlah penggunaan sumber yang dibenarkan secara per-proses seperti yang dijelaskan dalam Bab 1 hingga 4 Panduan Pengurusan Sumber Red Hat Enterprise Linux 7, dalam Bab 9 Analisis Sistem OpenSuse dan Panduan Penalaan, dan dalam Kumpulan Kawalan bahagian Ubuntu 14.04 Dokumentasi Pelayan.

The /Proc/2822/FD adalah direktori yang mengandungi satu pautan simbolik untuk setiap deskriptor fail proses telah dibuka. Imej berikut menunjukkan maklumat ini untuk proses yang dimulakan di TTY1 (terminal pertama) untuk mencipta .ISO gambar:

Cari maklumat proses Linux

Imej di atas menunjukkan bahawa stdin (deskriptor fail 0), stdout (deskriptor fail 1), dan stderr (deskriptor fail 2) dipetakan ke /dev/sifar, /root/ujian.ISO, dan /dev/tty1, masing -masing.

Maklumat lanjut mengenai /Proc boleh didapati dalam "The /Proc Dokumen FileSystem "disimpan dan diselenggarakan oleh kernel.org, dan dalam manual pengatur linux.

Menetapkan had sumber secara per-pengguna di Linux

Sekiranya anda tidak berhati -hati dan biarkan mana -mana pengguna menjalankan bilangan proses yang tidak terhad, anda akhirnya mungkin mengalami penutupan sistem yang tidak dijangka atau dikunci kerana sistem memasuki keadaan yang tidak dapat digunakan. Untuk mengelakkan perkara ini berlaku, anda harus meletakkan had pada bilangan proses pengguna boleh bermula.

Untuk melakukan ini, edit /etc/keselamatan/had.Conf dan tambahkan baris berikut di bahagian bawah fail untuk menetapkan had:

* NPROC HARD 10 

Bidang pertama boleh digunakan untuk menunjukkan sama ada pengguna, kumpulan, atau semuanya (*), sedangkan medan kedua menguatkuasakan had keras pada bilangan proses (nproc) ke 10. Untuk menerapkan perubahan, masuk dan kembali sudah cukup.

Oleh itu, mari kita lihat apa yang berlaku jika pengguna tertentu selain akar (sama ada yang sah atau tidak) cuba memulakan bom garpu shell. Sekiranya kami tidak melaksanakan had, ini pada mulanya akan melancarkan dua contoh fungsi, dan kemudian menduplikasi masing -masing dalam gelung yang tidak pernah berlaku. Oleh itu, ia akhirnya akan membawa sistem anda merangkak.

Walau bagaimanapun, dengan sekatan di atas, bom garpu tidak berjaya tetapi pengguna masih akan terkunci sehingga pentadbir sistem membunuh proses yang berkaitan dengannya:

Jalankan bom garpu shell

Petua: Sekatan lain yang mungkin dilakukan oleh Ulimit didokumentasikan di had.Conf fail.

Linux Alat Pengurusan Proses Lain

Sebagai tambahan kepada alat yang dibincangkan sebelum ini, pentadbir sistem mungkin juga perlu:

a) Ubah suai keutamaan pelaksanaan (penggunaan sumber sistem) proses menggunakan Renice. Ini bermakna bahawa kernel akan memperuntukkan lebih banyak sumber sistem ke proses berdasarkan keutamaan yang diberikan (bilangan yang biasa dikenali sebagai "kesakitan"Dalam jarak dari -20 ke 19).

Semakin rendah nilai, semakin besar keutamaan pelaksanaan. Pengguna biasa (selain akar) hanya dapat mengubah suai proses yang mereka miliki dengan nilai yang lebih tinggi (yang bermaksud keutamaan pelaksanaan yang lebih rendah), sedangkan akar dapat mengubah nilai ini untuk sebarang proses, dan dapat meningkatkan atau menurunkannya.

Sintaks asas Renice adalah seperti berikut:

# Renice [-N] Pengenalpastian 

Sekiranya hujah selepas nilai keutamaan baru tidak hadir (kosong), ia ditetapkan kepada PID secara lalai. Dalam hal ini, keburukan proses dengan PID = pengenal ditetapkan ke .

b) Mengganggu pelaksanaan biasa proses apabila diperlukan. Ini biasanya dikenali sebagai "membunuh" prosesnya. Di bawah tudung, ini bermaksud menghantar proses isyarat untuk menyelesaikan pelaksanaannya dengan betul dan melepaskan sumber yang digunakan dengan teratur.

Untuk membunuh proses, gunakan bunuh Perintah seperti berikut:

# Bunuh PID 

Sebagai alternatif, anda boleh menggunakan pkill untuk menamatkan semua proses pemilik tertentu (-u), atau pemilik kumpulan (-G), atau bahkan proses yang mempunyai persamaan PPID (-P). Pilihan ini boleh diikuti oleh perwakilan angka atau nama sebenar sebagai pengenal:

# PKILL [PILIHAN] Pengenalpastian 

Sebagai contoh,

# pkill -g 1000 

akan membunuh semua proses yang dimiliki oleh kumpulan dengan GID = 1000.

Dan,

# pkill -p 4993 

akan membunuh semua proses yang PPID 4993.

Sebelum menjalankan a pkill, Adalah idea yang baik untuk menguji hasilnya dengan pgrep Pertama, mungkin menggunakan -L pilihan juga untuk menyenaraikan nama proses. Ia mengambil pilihan yang sama tetapi hanya mengembalikan PID proses (tanpa mengambil tindakan selanjutnya) yang akan dibunuh jika pkill digunakan.

# pgrep -l -u gacanepa 

Ini digambarkan dalam imej seterusnya:

Cari proses berjalan pengguna di Linux

Ringkasan

Dalam artikel ini, kami telah meneroka beberapa cara untuk memantau penggunaan sumber untuk mengesahkan integriti dan ketersediaan komponen perkakasan dan perisian kritikal dalam sistem Linux.

Kami juga telah belajar bagaimana untuk mengambil tindakan yang sesuai (sama ada dengan menyesuaikan keutamaan pelaksanaan proses tertentu atau dengan menamatkannya) di bawah keadaan yang luar biasa.

Kami harap konsep yang dijelaskan dalam tutorial ini telah membantu. Sekiranya anda mempunyai sebarang pertanyaan atau komen, sila hubungi kami menggunakan borang hubungan di bawah.

Menjadi Pentadbir Sistem Bersertifikat Linux