Dalam proses pengendalian dan penyelenggaraan pelayan, selalunya perlu untuk memantau pelbagai sumber pelayan, seperti: Pemantauan beban CPU, pemantauan penggunaan cakera, pemantauan nombor proses, dsb., supaya segera menggera dan memberitahu bila keabnormalan berlaku dalam sistem pentadbir. Artikel ini memperkenalkan beberapa keperluan pemantauan biasa dan penulisan skrip shell di bawah sistem Linux.
Direktori artikel:
1.Linux menggunakan Shell untuk menyemak sama ada proses itu wujud
2.Linux menggunakan Shell untuk mengesan penggunaan CPU proses
3.Linux menggunakan Shell untuk mengesan penggunaan memori proses
4.Linux menggunakan Shell untuk mengesan penggunaan pemegang proses
5.Linux menggunakan Shell untuk menyemak sama ada port TCP atau UDP sedang mendengar
6.Linux menggunakan Shell untuk menyemak bilangan proses berjalan bagi nama proses tertentu
7.Linux menggunakan Shell untuk mengesan beban CPU sistem
8.Linux menggunakan Shell untuk mengesan ruang cakera sistem
9. Ringkasan
Semak sama ada proses itu wujud
Apabila memantau proses, kami secara amnya perlu mendapatkan ID proses ID proses ialah pengecam unik proses tersebut. Walau bagaimanapun, kadangkala mungkin terdapat berbilang proses dengan nama proses yang sama dijalankan di bawah pengguna yang berbeza pada pelayan . Fungsi berikut GetPID Ia memberikan fungsi untuk mendapatkan ID proses bagi nama proses yang ditentukan di bawah pengguna yang ditentukan (pada masa ini hanya mempertimbangkan untuk memulakan proses dengan nama proses ini di bawah pengguna ini. Ia mempunyai dua parameter: nama pengguna dan nama proses). Ia mula-mula menggunakan ps untuk mencari maklumat proses, dan pada masa yang sama Gunakan grep untuk menapis proses yang diperlukan, dan akhirnya menggunakan sed dan awk untuk mencari nilai ID proses yang diperlukan (fungsi ini boleh diubah suai mengikut situasi sebenar , seperti jika maklumat lain perlu ditapis, dsb.).
Senarai 1. Pantau proses
Contoh demo:
1) Program sumber (contohnya, cari ID proses di mana pengguna adalah root dan nama proses ialah CFTestApp)
3) Analisis keputusan
Seperti yang dapat dilihat daripada output di atas: 11426 ialah ID proses program CFTestApp di bawah pengguna root.
4) Pengenalan arahan
1. ps: Lihat maklumat proses segera dalam sistem. Parameter: -u
Kadangkala ada kemungkinan proses tidak dimulakan Fungsi berikut adalah untuk menyemak sama ada ID proses wujud Jika proses tidak berjalan, outputnya ialah:
Kesan proses penggunaan CPU
Apabila menyelenggara perkhidmatan aplikasi, kami sering menghadapi situasi di mana CPU terlalu tinggi, menyebabkan kesesakan perniagaan dan gangguan perniagaan. CPU yang berlebihan mungkin disebabkan oleh situasi yang tidak normal seperti beban perniagaan atau gelung yang tidak berkesudahan CPU proses perniagaan sentiasa dipantau melalui skrip Kakitangan penyelenggaraan boleh dimaklumkan pada masa apabila penggunaan CPU tidak normal, yang memudahkan kakitangan penyelenggaraan menganalisis, mencari dan. elakkan urusan dengan tepat pada masanya. Fungsi berikut mendapatkan penggunaan CPU proses untuk ID proses tertentu. Ia mempunyai parameter untuk ID proses Ia mula-mula menggunakan ps untuk mencari maklumat proses, sambil menapis baris %CPU melalui grep -v, dan akhirnya menggunakan awk untuk mencari bahagian integer peratusan penggunaan CPU (jika terdapat berbilang. CPU dalam sistem, penggunaan CPU boleh melebihi 100%).
Senarai 2. Pemantauan masa nyata CPU proses perniagaan
1) Program sumber (dengan mengandaikan bahawa ID proses CFTestApp telah disoal di atas sebagai 11426)
Kesan penggunaan memori proses
Apabila menyelenggara perkhidmatan aplikasi, kami sering menghadapi situasi di mana proses ranap disebabkan penggunaan memori yang berlebihan, menyebabkan gangguan perniagaan (contohnya, ruang memori maksimum yang boleh dialamatkan bagi program 32-bit ialah 4G. Jika melebihi, memori aplikasi akan gagal, dan ingatan fizikal juga terhad). Penggunaan memori yang berlebihan mungkin disebabkan oleh kebocoran memori, pengumpulan mesej, dll. Penggunaan memori proses perniagaan sentiasa dipantau melalui skrip Penggera boleh dihantar dalam masa (contohnya, melalui SMS) apabila penggunaan memori tidak normal, supaya kakitangan penyelenggaraan boleh mengendalikannya tepat pada masanya. Fungsi berikut mendapatkan penggunaan memori proses untuk ID proses tertentu. Ia mempunyai parameter untuk ID proses, ia mula-mula menggunakan ps untuk mencari maklumat proses, sambil menapis baris VSZ melalui grep -v, dan kemudian mendapat penggunaan memori dalam megabait dengan membahagikan dengan 1000.Senarai 4. Pantau penggunaan memori proses perniagaan
Penyenaraian 5. Menentukan sama ada penggunaan memori melebihi had
1) Program sumber (dengan mengandaikan bahawa ID proses CFTestApp telah disoal di atas sebagai 11426)
Seperti yang dapat dilihat daripada output di atas: penggunaan memori semasa program CFTestApp ialah 248M, iaitu normal dan tidak melebihi had penggera 1.6G.
Kesan penggunaan pemegang proses
Apabila menyelenggara perkhidmatan aplikasi, kami sering menghadapi gangguan perniagaan akibat penggunaan pemegang yang berlebihan. Penggunaan pengendalian proses pada setiap platform adalah terhad Contohnya, pada platform Linux, kita boleh menggunakan perintah ulimit – n (buka fail (-n) 1024) atau melihat kandungan /etc/security/limits.conf ke. dapatkan had pengendalian Proses. Penggunaan pemegang yang berlebihan mungkin disebabkan oleh beban yang berlebihan, kebocoran pemegang, dsb. Penggunaan pemegang proses perniagaan sentiasa dipantau melalui skrip Makluman boleh dihantar dalam masa apabila keabnormalan berlaku (contohnya, melalui SMS), supaya kakitangan penyelenggaraan boleh mengendalikannya tepat pada masanya. Fungsi berikut mendapatkan penggunaan pengendalian proses untuk ID proses yang ditentukan. Ia mempunyai satu parameter untuk ID proses Ia mula-mula menggunakan ls untuk mengeluarkan maklumat pengendalian proses, dan kemudian menggunakan wc -l untuk mengira bilangan pemegang keluaran.
Contoh demo:
1) Program sumber (dengan mengandaikan bahawa ID proses CFTestApp yang terdapat dalam pertanyaan di atas ialah 11426)
2) Hasil keluaran
Seperti yang dapat dilihat daripada output di atas: penggunaan pemegang semasa program CFTestApp ialah 528, iaitu normal, dan tidak melebihi had penggera 900.
4) Pengenalan arahan
wc: Kira bilangan bait, perkataan dan baris dalam fail yang ditentukan, dan paparkan serta keluarkan keputusan statistik. Parameter: -l mengira bilangan baris. -c mengira bait. -w Kira bilangan perkataan.
Semak sama ada port TCP atau UDP sedang mendengar
Pengesanan port sering ditemui dalam pengesanan sumber sistem, terutamanya dalam situasi komunikasi rangkaian, pengesanan status port selalunya sangat penting. Kadangkala proses, CPU, memori, dsb. mungkin dalam keadaan biasa, tetapi port berada dalam keadaan tidak normal dan perniagaan tidak berjalan seperti biasa. Fungsi berikut boleh menentukan sama ada port yang ditentukan sedang mendengar. Ia mempunyai parameter untuk port yang akan dikesan Ia mula-mula menggunakan netstat untuk mengeluarkan maklumat penghunian port, dan kemudian menapis bilangan port TCP yang mendengar melalui grep, awk dan wc Pernyataan kedua mengeluarkan bilangan port UDP . Jika mendengar port TCP dan UDP semuanya 0, kembalikan 0, jika tidak, kembalikan 1.
Senarai 6. Pengesanan port
Seperti yang dapat dilihat daripada output di atas: port 8080 pelayan Linux ini dalam keadaan mendengar.
4) Pengenalan arahan
netstat: Digunakan untuk memaparkan data statistik yang berkaitan dengan protokol IP, TCP, UDP dan ICMP Ia biasanya digunakan untuk menyemak sambungan rangkaian setiap port mesin. Parameter: -a memaparkan semua soket dalam sambungan. -n Gunakan alamat IP secara terus tanpa melalui pelayan nama domain.
Fungsi berikut juga mengesan sama ada port TCP atau UDP tertentu berada dalam keadaan biasa.
egrep: Cari rentetan yang ditentukan dalam fail. Kesan pelaksanaan egrep adalah seperti grep -E Sintaks dan parameter yang digunakan boleh merujuk kepada perintah grep. Sintaks, ungkapan biasa lanjutan mempunyai spesifikasi ungkapan yang lebih lengkap daripada ungkapan biasa asas.
Lihat bilangan proses berjalan bagi nama proses tertentu
Kadang-kadang kita mungkin perlu mendapatkan bilangan proses yang dimulakan pada pelayan Fungsi berikut adalah untuk mengesan bilangan proses yang sedang berjalan Contohnya, nama proses ialah CFTestApp.
Apabila melakukan penyelenggaraan pelayan, kadangkala kami menghadapi gangguan perniagaan akibat beban CPU (penggunaan) sistem yang berlebihan. Berbilang proses mungkin berjalan pada pelayan Ia adalah perkara biasa untuk melihat CPU satu proses, tetapi beban CPU keseluruhan sistem mungkin tidak normal. Beban CPU sistem sentiasa dipantau melalui skrip, dan penggera boleh dihantar dalam masa apabila keabnormalan berlaku, membolehkan kakitangan penyelenggaraan mengendalikannya tepat pada masanya dan mengelakkan kemalangan. Fungsi berikut boleh mengesan penggunaan CPU sistem Gunakan vmstat untuk mendapatkan nilai terbiar CPU sistem 5 kali, ambil purata, dan kemudian dapatkan nilai penggunaan CPU sebenar dengan mengambil perbezaan daripada 100.
1) Program sumber
3) Ergebnisanalyse
Wie aus der obigen Ausgabe ersichtlich ist: Die aktuelle CPU-Auslastung des Linux-Serversystems beträgt 87 %, was normal ist und die Alarmgrenze von 90 % nicht überschreitet.
4) Befehlseinführung
vmstat: Die Abkürzung für Virtual Meomory Statistics (Virtual Memory Statistics), mit der der virtuelle Speicher, der Prozess und die CPU-Aktivitäten des Betriebssystems überwacht werden können.
Parameter: -n gibt an, dass die Ausgabe-Header-Informationen während der periodischen Schleifenausgabe nur einmal angezeigt werden.
Überprüfen Sie den Systemspeicherplatz
Die Erkennung des Systemspeicherplatzes ist ein wichtiger Teil der Systemressourcenerkennung. Während der Systemwartung müssen wir häufig die Speicherplatznutzung des Servers überprüfen. Da einige Unternehmen von Zeit zu Zeit Anrufnotizen, Protokolle oder temporäre Dateien schreiben müssen, kann es auch zu Geschäftsunterbrechungen kommen, wenn der Speicherplatz erschöpft ist. Die folgende Funktion kann die Speicherplatznutzung eines Verzeichnisses im aktuellen System ermitteln Eingabeparameter Für den zu erkennenden Verzeichnisnamen verwenden Sie df, um die Informationen zur Speicherplatznutzung des Systems auszugeben, und filtern Sie dann durch grep und awk, um den Prozentsatz der Speicherplatznutzung eines bestimmten Verzeichnisses zu erhalten.
Beispieldemo:
1) Quellprogramm (das Erkennungsverzeichnis ist /boot)
2) Ergebnisausgabe
Aus der obigen Ausgabe können wir ersehen, dass 14 % des Speicherplatzes im /boot-Verzeichnis auf diesem Linux-Serversystem verwendet wurden, was normal ist und die Alarmgrenze von 90 % der Nutzung nicht überschreitet.
4) Befehlseinführung
df: Überprüfen Sie die Speicherplatznutzung des Dateisystems. Mit diesem Befehl können Sie Informationen erhalten, z. B. wie viel Speicherplatz auf der Festplatte belegt ist und wie viel Speicherplatz derzeit noch übrig ist. Parameter: -k Anzeige in k Bytes.
Zusammenfassung
Auf der Linux-Plattform ist die Shell-Skriptüberwachung eine sehr einfache, bequeme und effektive Methode zur Überwachung von Servern und Prozessen. Sie ist sehr hilfreich für Systementwickler und Prozessbetreuer. Es kann nicht nur die oben genannten Informationen überwachen und Alarme senden, sondern auch Prozessprotokolle und andere Informationen überwachen. Ich hoffe, dass dieser Artikel für alle hilfreich ist.