ในระหว่างการดำเนินการเซิร์ฟเวอร์และกระบวนการบำรุงรักษามักจะต้องตรวจสอบทรัพยากรต่าง ๆ ของเซิร์ฟเวอร์เช่น: การตรวจสอบโหลด CPU การตรวจสอบการใช้ดิสก์การตรวจสอบหมายเลขกระบวนการ ฯลฯ เพื่อให้สัญญาณเตือนภัยทันทีเมื่อเกิดความผิดปกติในระบบและแจ้งผู้ดูแลระบบ บทความนี้แนะนำข้อกำหนดการตรวจสอบทั่วไปหลายประการและการเขียนสคริปต์เชลล์ในระบบ Linux
ไดเรกทอรีบทความ:
1.linux ใช้เชลล์เพื่อตรวจสอบว่ากระบวนการมีอยู่หรือไม่
2. Linux ใช้เชลล์เพื่อตรวจจับการใช้งาน CPU กระบวนการ
3. Linux ใช้เชลล์เพื่อตรวจจับการใช้หน่วยความจำกระบวนการ
4. Linux ใช้เชลล์เพื่อตรวจจับการใช้งานกระบวนการ
5.Linux ใช้เชลล์เพื่อดูว่าพอร์ต TCP หรือ UDP กำลังฟังอยู่
6.linux ใช้เชลล์เพื่อดูจำนวนกระบวนการทำงาน
7. Linux ใช้เชลล์เพื่อตรวจจับโหลด CPU ของระบบ
8. Linux ใช้เชลล์เพื่อตรวจจับพื้นที่ดิสก์ระบบ
9. สรุป
ตรวจสอบว่ากระบวนการมีอยู่หรือไม่
เมื่อตรวจสอบกระบวนการเรามักจะต้องได้รับรหัสของกระบวนการ ID กระบวนการเป็นตัวระบุที่ไม่ซ้ำกันของกระบวนการ แต่บางครั้งกระบวนการหลายกระบวนการที่มีชื่อกระบวนการเดียวกันอาจถูกเรียกใช้ภายใต้ผู้ใช้ที่แตกต่างกันบนเซิร์ฟเวอร์ ฟังก์ชั่น GETPID ด้านล่างให้ฟังก์ชั่นการรับรหัสกระบวนการของชื่อกระบวนการที่ระบุภายใต้ผู้ใช้ที่ระบุ (ปัจจุบันพิจารณาเฉพาะการเริ่มต้นกระบวนการด้วยชื่อกระบวนการนี้ภายใต้ผู้ใช้นี้) มันมีสองพารามิเตอร์: ชื่อผู้ใช้และชื่อกระบวนการ ก่อนอื่นใช้ PS เพื่อค้นหาข้อมูลกระบวนการและกรองกระบวนการที่ต้องการผ่าน GREP และในที่สุดก็พบค่า ID ของกระบวนการผ่าน SED และ AWK (ฟังก์ชั่นนี้สามารถแก้ไขได้ตามเงื่อนไขจริงเช่นการกรองข้อมูลอื่น ๆ ฯลฯ )
รายการ 1. การตรวจสอบกระบวนการ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getpid #user #name
-
psuser = $ 1
psname = $ 2
pid = `ps -u $ psuser | grep $ psname | grep -v grep | grep -v vi | grep -v dbx/n
| grep -v tail | grep -v start | grep -v stop | sed -n 1p | awk '{พิมพ์ $ 1}' `
ก้อง $ pid
-
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (ตัวอย่างเช่นค้นหารหัสกระบวนการของผู้ใช้เป็นรูทและชื่อกระบวนการคือ cftestapp)
การคัดลอกรหัสมีดังนี้:
pid = `getpid root cftestapp`
ก้อง $ pid
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
11426
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
จากผลลัพธ์ข้างต้นเราจะเห็นว่า 11426 เป็นรหัสกระบวนการของโปรแกรม CFTESTAPP ภายใต้ผู้ใช้รูท
4) คำสั่งแนะนำ
1. PS: ดูข้อมูลกระบวนการทันทีในระบบ พารามิเตอร์: -U <รหัสการระบุผู้ใช้> แสดงสถานะของโปรแกรมที่เป็นของผู้ใช้และยังสามารถระบุได้โดยใช้ชื่อผู้ใช้ -p <รหัสการระบุกระบวนการ> ระบุรหัสการระบุกระบวนการและแสดงสถานะสถานะของกระบวนการ -o ระบุรูปแบบเอาต์พุต 2. GREP: ใช้เพื่อค้นหาบรรทัดปัจจุบันในไฟล์ที่ตรงกับสตริง พารามิเตอร์: -V การเลือกย้อนกลับนั่นคือบรรทัดที่แสดงเนื้อหา 'สตริงการค้นหา' 3. SED: ตัวแก้ไขข้อความที่ไม่โต้ตอบที่แก้ไขไฟล์หรือส่งออกไฟล์จากอินพุตมาตรฐานและสามารถประมวลผลเนื้อหาทีละบรรทัดเท่านั้น พารามิเตอร์: -n อ่านบรรทัดอินพุตถัดไปและใช้คำสั่งถัดไปเพื่อประมวลผลบรรทัดใหม่แทนคำสั่งแรก P Flag พิมพ์บรรทัดการจับคู่ 4. awk: ภาษาการเขียนโปรแกรมสำหรับการประมวลผลข้อความและข้อมูลภายใต้ linux/unix ข้อมูลอาจมาจากอินพุตมาตรฐานหนึ่งไฟล์ขึ้นไปหรือเอาต์พุตของคำสั่งอื่น ๆ รองรับฟังก์ชั่นขั้นสูงเช่นฟังก์ชั่นที่ผู้ใช้กำหนดและนิพจน์ปกติแบบไดนามิกและเป็นเครื่องมือการเขียนโปรแกรมที่ทรงพลังภายใต้ Linux/UNIX มันถูกใช้ในบรรทัดคำสั่ง แต่เป็นสคริปต์มากกว่า วิธีการประมวลผลข้อความและข้อมูลของ AWK: สแกนไฟล์ทีละขั้นตอนจากบรรทัดแรกไปยังบรรทัดสุดท้ายโดยมองหาแถวของรูปแบบที่เฉพาะเจาะจงและทำสิ่งที่คุณต้องการในบรรทัดเหล่านั้น หากไม่ได้ระบุการดำเนินการประมวลผลแถวการจับคู่จะแสดงไปยังเอาต์พุตมาตรฐาน (หน้าจอ) หากไม่มีการระบุโหมดแถวทั้งหมดที่ระบุโดยการดำเนินการจะถูกประมวลผล พารามิเตอร์: -F FS หรือ Field -Separator FS: ระบุตัวคั่นไฟล์อินพุต FS เป็นสตริงหรือนิพจน์ทั่วไปเช่น -F:
บางครั้งอาจเป็นไปได้ว่ากระบวนการไม่ได้เริ่มต้น ฟังก์ชั่นต่อไปนี้คือการตรวจสอบว่ารหัสกระบวนการมีอยู่หรือไม่ หากกระบวนการนี้ไม่รันเอาต์พุต:
การคัดลอกรหัสมีดังนี้:
กระบวนการไม่มีอยู่
# ตรวจสอบว่ากระบวนการมีอยู่หรือไม่
ถ้า ["-$ pid" == "-"]
แล้ว
-
echo "กระบวนการไม่มีอยู่"
-
FI
ตรวจจับการใช้ CPU กระบวนการ
เมื่อรักษาบริการแอปพลิเคชันเรามักจะพบกับการอุดตันทางธุรกิจเนื่องจาก CPU ที่มากเกินไปส่งผลให้เกิดการหยุดชะงักทางธุรกิจ หาก CPU สูงเกินไปอาจเป็นเพราะภาระทางธุรกิจที่มากเกินไปหรือรอบผิดปกติเช่นวัฏจักรที่ตายแล้ว CPU ของกระบวนการทางธุรกิจได้รับการตรวจสอบในเวลาที่เหมาะสมผ่านสคริปต์และบุคลากรการบำรุงรักษาสามารถได้รับการแจ้งเตือนในเวลาที่เหมาะสมเมื่อการใช้งาน CPU ผิดปกติเพื่อให้เจ้าหน้าที่บำรุงรักษาสามารถวิเคราะห์ตำแหน่งและหลีกเลี่ยงการหยุดชะงักทางธุรกิจได้ทันที ฟังก์ชั่นต่อไปนี้สามารถรับการใช้ CPU กระบวนการของรหัสกระบวนการที่ระบุ มันมีพารามิเตอร์เป็นรหัสกระบวนการ ก่อนอื่นใช้ PS เพื่อค้นหาข้อมูลกระบวนการกรองแถว CPU %ผ่าน GREP -V และในที่สุดก็พบว่าส่วนจำนวนเต็มของเปอร์เซ็นต์การใช้งาน CPU ผ่าน AWK (หากมี CPU หลายตัวในระบบการใช้ CPU อาจเกิน 100 %)
รายการ 2. การตรวจสอบแบบเรียลไทม์ของกระบวนการทางธุรกิจ CPU
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getcpu
-
CPUVALUE = `PS -P $ 1 -O PCPU | GREP -V CPU | awk '{พิมพ์ $ 1}' | awk - F. '{พิมพ์ $ 1}' `
echo $ cpuvalue
-
ฟังก์ชั่นต่อไปนี้คือการได้รับการใช้งาน CPU ของกระบวนการนี้ผ่านฟังก์ชั่นข้างต้น GetCPU จากนั้นใช้คำสั่งแบบมีเงื่อนไขเพื่อตรวจสอบว่าการใช้ CPU นั้นเกินขีด จำกัด หรือไม่ หากเกิน 80% (สามารถปรับได้ตามสถานการณ์จริง) สัญญาณเตือนจะถูกส่งออกมิฉะนั้นข้อมูลปกติจะถูกส่งออก
รายการ 3. พิจารณาว่าการใช้ CPU นั้นเกินขีด จำกัด
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น checkcpu
-
PID = $ 1
cpu = `getcpu $ pid`
ถ้า [$ CPU -GT 80]
แล้ว
-
Echo“ การใช้งาน CPU มีขนาดใหญ่กว่า 80%”
-
อื่น
-
Echo“ การใช้งาน CPU เป็นเรื่องปกติ”
-
FI
-
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (สมมติว่ารหัสกระบวนการของ CFTESTAPP ได้รับการสอบถามด้านบนคือ 11426)
การคัดลอกรหัสมีดังนี้:
checkcpu 11426
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
การใช้งาน CPU คือ 75
การใช้งาน CPU เป็นเรื่องปกติ
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
ดังที่เห็นได้จากผลลัพธ์ข้างต้น: การใช้งาน CPU ปัจจุบันของโปรแกรม CFTESTAPP คือ 75%ซึ่งเป็นเรื่องปกติและไม่มีขีด จำกัด การเตือนมากกว่า 80%
ตรวจจับการใช้หน่วยความจำกระบวนการ
เมื่อบำรุงรักษาบริการแอปพลิเคชันมักจะพบว่ากระบวนการล่มเนื่องจากการใช้หน่วยความจำมากเกินไปส่งผลให้เกิดการหยุดชะงักทางธุรกิจ (ตัวอย่างเช่นพื้นที่หน่วยความจำสูงสุดที่โปรแกรม 32 บิตสามารถอยู่ได้คือ 4G หากเกินหน่วยความจำหน่วยความจำจะล้มเหลวและหน่วยความจำทางกายภาพก็มี จำกัด ) การใช้หน่วยความจำที่มากเกินไปอาจเกิดจากการรั่วไหลของหน่วยความจำการสะสมข้อความ ฯลฯ การใช้หน่วยความจำของกระบวนการทางธุรกิจสามารถตรวจสอบได้ในเวลาที่เหมาะสมผ่านสคริปต์และสามารถส่งสัญญาณเตือนภัยได้ในเวลาที่เหมาะสมเมื่อการใช้หน่วยความจำผิดปกติ (เช่นผ่าน SMS) เพื่ออำนวยความสะดวกในการบำรุงรักษา ฟังก์ชั่นต่อไปนี้สามารถรับการใช้หน่วยความจำกระบวนการของรหัสกระบวนการที่ระบุ มันมีพารามิเตอร์เป็น ID กระบวนการซึ่งใช้ PS เป็นครั้งแรกเพื่อค้นหาข้อมูลกระบวนการกรองบรรทัด VSZ ผ่าน GREP -V จากนั้นใช้การใช้หน่วยความจำในเมกะไบต์โดยการหาร 1,000
รายการ 4. การตรวจสอบการใช้หน่วยความจำกระบวนการทางธุรกิจ
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getMem
-
memusage = `ps -o vsz -p $ 1 | grep -v vsz`
((memusage /= 1000))
Echo $ memusage
-
ฟังก์ชั่นต่อไปนี้คือการได้รับการใช้หน่วยความจำของกระบวนการนี้ผ่านฟังก์ชั่นด้านบน GetMem จากนั้นใช้คำสั่งเงื่อนไขเพื่อพิจารณาว่าการใช้หน่วยความจำเกินขีด จำกัด หรือไม่ หากเกิน 1.6 กรัม (สามารถปรับได้ตามสถานการณ์จริง) สัญญาณเตือนจะถูกส่งออกมิฉะนั้นข้อมูลปกติจะถูกส่งออก
รายการ 5. พิจารณาว่าการใช้หน่วยความจำเกินขีด จำกัด
การคัดลอกรหัสมีดังนี้:
mem = `getMem $ pid`
ถ้า [$ mem -gt 1600]
แล้ว
-
Echo“ การใช้หน่วยความจำมีขนาดใหญ่กว่า 1.6 กรัม”
-
อื่น
-
echo“ การใช้หน่วยความจำเป็นเรื่องปกติ”
-
FI
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (สมมติว่ารหัสกระบวนการของ CFTESTAPP ได้รับการสอบถามด้านบนคือ 11426)
การคัดลอกรหัสมีดังนี้:
mem = `getMem 11426`
echo "การใช้หน่วยความจำคือ $ mem m"
ถ้า [$ mem -gt 1600]
แล้ว
-
echo "การใช้หน่วยความจำมีขนาดใหญ่กว่า 1.6g"
-
อื่น
-
echo "การใช้หน่วยความจำเป็นเรื่องปกติ"
-
FI
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
การใช้หน่วยความจำคือ 248 เมตร
การใช้หน่วยความจำเป็นเรื่องปกติ
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
จากเอาต์พุตข้างต้นเราจะเห็นว่าการใช้หน่วยความจำปัจจุบันของโปรแกรม CFTESTAPP คือ 248m ซึ่งเป็นเรื่องปกติและไม่มีขีด จำกัด การเตือนภัยเกิน 1.6 กรัม
ตรวจจับกระบวนการจัดการการใช้งาน
เมื่อบำรุงรักษาบริการแอปพลิเคชันการหยุดชะงักทางธุรกิจมักจะพบเนื่องจากการใช้งานมากเกินไป แต่ละแพลตฟอร์มใช้ที่จับกระบวนการด้วยการใช้งาน จำกัด ตัวอย่างเช่นบนแพลตฟอร์ม Linux เราสามารถใช้คำสั่ง ULIMIT N (เปิดไฟล์ (-N) 1024) หรือดูเนื้อหาของ /etc/security/limits.conf เพื่อรับข้อ จำกัด การจัดการกระบวนการ หากมีการใช้ที่จับสูงเกินไปการรั่วไหลของด้ามจับอาจเกิดจากการโหลดมากเกินไปการรั่วไหลของด้ามจับ ฯลฯ กระบวนการทางธุรกิจจัดการการใช้งานจะถูกตรวจสอบในเวลาที่เหมาะสมผ่านสคริปต์และการเตือนภัยสามารถส่งได้ในเวลาที่เหมาะสมในกรณีที่มีความผิดปกติ (เช่นผ่าน SMS) เพื่ออำนวยความสะดวกในการบำรุงรักษา ฟังก์ชั่นต่อไปนี้สามารถรับกระบวนการจัดการการใช้งานรหัสกระบวนการที่ระบุ มันมีพารามิเตอร์เป็นรหัสกระบวนการ ก่อนอื่นใช้ LS เพื่อส่งออกข้อมูลการจัดการกระบวนการแล้วนับจำนวนที่จับที่ส่งออกผ่าน WC -L
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getdes
-
des = `ls/proc/$ 1/fd | wc -l`
สะท้อน $ des
-
ฟังก์ชั่นต่อไปนี้คือการได้รับการใช้งานที่จับของกระบวนการนี้ผ่านฟังก์ชั่น GetDes ข้างต้นแล้วใช้คำสั่งแบบมีเงื่อนไขเพื่อพิจารณาว่าการใช้งานที่จับเกินขีด จำกัด หรือไม่ หากเกิน 900 (สามารถปรับได้ตามสถานการณ์จริง) สัญญาณเตือนจะถูกส่งออกมิฉะนั้นข้อมูลปกติจะถูกส่งออก
การคัดลอกรหัสมีดังนี้:
des = `getdes $ pid`
ถ้า [$ des -gt 900]
แล้ว
-
Echo“ จำนวน DES มีขนาดใหญ่กว่า 900”
-
อื่น
-
echo“ จำนวน DES เป็นเรื่องปกติ”
-
FI
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (สมมติว่ารหัสกระบวนการของ CFTESTAPP อยู่ด้านบนคือ 11426)
การคัดลอกรหัสมีดังนี้:
des = `getdes 11426`
echo "จำนวน DES คือ $ des"
ถ้า [$ des -gt 900]
แล้ว
-
echo "จำนวน DES มีขนาดใหญ่กว่า 900"
-
อื่น
-
echo "จำนวน DES เป็นเรื่องปกติ"
-
FI
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
จำนวน DES คือ 528
จำนวน DES เป็นเรื่องปกติ
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
จากผลลัพธ์ข้างต้นเราจะเห็นว่าที่จับปัจจุบันของโปรแกรม CFTESTAPP คือ 528 ซึ่งเป็นเรื่องปกติและไม่มีขีด จำกัด การเตือนมากกว่า 900
4) คำสั่งแนะนำ
WC: สถิติจำนวนไบต์คำและบรรทัดในไฟล์ที่ระบุและแสดงผลลัพธ์ทางสถิติเพื่อส่งออก พารามิเตอร์: -l นับจำนวนแถว -c นับจำนวนไบต์ -w นับจำนวนคำ
ตรวจสอบว่าพอร์ต TCP หรือ UDP กำลังฟังอยู่
การตรวจจับพอร์ตมักพบในการตรวจจับทรัพยากรระบบโดยเฉพาะอย่างยิ่งในการสื่อสารเครือข่ายการตรวจจับสถานะพอร์ตมักจะสำคัญมาก บางครั้งกระบวนการซีพียูหน่วยความจำ ฯลฯ อาจอยู่ในสถานะปกติ แต่พอร์ตอยู่ในสถานะที่ผิดปกติและธุรกิจไม่ทำงานตามปกติ ฟังก์ชั่นต่อไปนี้สามารถกำหนดได้ว่าพอร์ตที่ระบุกำลังฟังอยู่หรือไม่ มันมีพารามิเตอร์ที่ตรวจพบพอร์ต ก่อนอื่นใช้ NetStat เพื่อส่งออกข้อมูลอาชีพพอร์ตจากนั้นกรองหมายเลขเอาต์พุตของพอร์ต TCP ผ่าน GREP, AWK, WC คำสั่งที่สองคือการส่งออกจำนวนจอภาพของพอร์ต UDP หากพอร์ต TCP และ UDP ทั้งสองเป็น 0, return 0 มิฉะนั้นจะส่งคืน 1
รายการ 6. การตรวจจับพอร์ต
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่นการฟัง
-
tcplisteningNum = `netstat -an | grep ": $ 1" | /n
awk '$ 1 == "tcp" && $ nf == "ฟัง" {พิมพ์ $ 0}' | wc -l`
udplisteningNum = `netstat -an | grep": $ 1 " /n
| awk '$ 1 == "udp" && $ nf == "0.0.0.0:*" {พิมพ์ $ 0}' | wc -l`
((ListeningNum = TCPlisteningNum + UdPlisteningNum)))
ถ้า [$ listennum == 0]
แล้ว
-
สะท้อน "0"
-
อื่น
-
สะท้อน "1"
-
FI
-
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (ตัวอย่างเช่นการสืบค้นว่าสถานะของพอร์ต 8080 กำลังฟังอยู่หรือไม่)
การคัดลอกรหัสมีดังนี้:
islisten = `การฟัง 8080 '
ถ้า [$ islisten -eq 1]
แล้ว
-
echo "พอร์ตกำลังฟัง"
-
อื่น
-
echo "พอร์ตไม่ฟัง"
-
FI
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
พอร์ตกำลังฟัง
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
จากผลลัพธ์ข้างต้นจะเห็นได้ว่าพอร์ต 8080 ของเซิร์ฟเวอร์ Linux นี้อยู่ในสถานะการฟัง
4) คำสั่งแนะนำ
NetStat: ใช้เพื่อแสดงข้อมูลทางสถิติที่เกี่ยวข้องกับโปรโตคอล IP, TCP, UDP และ ICMP และโดยทั่วไปจะใช้เพื่อตรวจสอบสถานะการเชื่อมต่อเครือข่ายของแต่ละพอร์ตของเครื่อง พารามิเตอร์: -A แสดงซ็อกเก็ตในการเชื่อมต่อทั้งหมด -n ใช้ที่อยู่ IP โดยตรงไม่ใช่ผ่านเซิร์ฟเวอร์ชื่อโดเมน
ฟังก์ชั่นต่อไปนี้คือการตรวจสอบว่าพอร์ต TCP หรือ UDP อยู่ในสถานะปกติหรือไม่
การคัดลอกรหัสมีดังนี้:
tcp: netstat -an | eGrep $ 1 | awk '$ 6 == "ฟัง" && $ 1 == "tcp" {พิมพ์ $ 0}'
UDP: NetStat -an | eGrep $ 1 | awk '$ 1 == "UDP" && $ 5 == "0.0.0.0.0:*" พิมพ์ $ 0}'
คำสั่งแนะนำ
EGREP: ค้นหาสตริงที่ระบุในไฟล์ เอฟเฟกต์การดำเนินการของ EGREP เป็นเหมือน GREP -E ไวยากรณ์และพารามิเตอร์ที่ใช้สามารถอ้างถึงคำสั่ง GREP ความแตกต่างจาก GREP เป็นวิธีการตีความสตริง EGREP ถูกตีความโดยใช้ไวยากรณ์นิพจน์ทั่วไปขยายในขณะที่ GREP ใช้ไวยากรณ์การแสดงออกปกติพื้นฐาน การแสดงออกปกติที่ขยายออกมีข้อกำหนดการแสดงออกที่สมบูรณ์มากกว่านิพจน์ทั่วไปพื้นฐาน
ตรวจสอบจำนวนกระบวนการทำงาน
บางครั้งเราอาจต้องได้รับจำนวนการเริ่มต้นของกระบวนการบนเซิร์ฟเวอร์ ฟังก์ชั่นต่อไปนี้คือการตรวจจับจำนวนกระบวนการทำงานเช่นชื่อกระบวนการคือ CFTESTAPP
การคัดลอกรหัสมีดังนี้:
runnum = `ps -ef | grep -v vi | Grep -v Tail | grep "[ /] cftestapp" | grep -v grep | wc -l
ตรวจจับการโหลดระบบ CPU
เมื่อบำรุงรักษาเซิร์ฟเวอร์บางครั้งการหยุดชะงักทางธุรกิจจะพบเนื่องจากโหลด CPU (การใช้ประโยชน์) มากเกินไป อาจเป็นไปได้ที่จะเรียกใช้หลายกระบวนการบนเซิร์ฟเวอร์ เป็นเรื่องปกติที่จะดู CPU ของกระบวนการเดียว แต่โหลด CPU ของระบบทั้งหมดอาจผิดปกติ โหลด CPU ของระบบจะถูกตรวจสอบในเวลาที่เหมาะสมผ่านสคริปต์และสามารถส่งสัญญาณเตือนได้ในเวลาที่เหมาะสมในกรณีที่มีความผิดปกติซึ่งอำนวยความสะดวกในการบำรุงรักษาบุคลากรที่จะจัดการกับมันในเวลาที่เหมาะสมและป้องกันอุบัติเหตุ ฟังก์ชั่นต่อไปนี้สามารถตรวจจับการใช้ CPU ของระบบ ใช้ VMSTAT เพื่อใช้ค่าที่ไม่ได้ใช้งานของระบบ CPU 5 ครั้งใช้ค่าเฉลี่ยจากนั้นรับค่าการเข้าพักที่แท้จริงของ CPU ปัจจุบันโดยใช้ความแตกต่างจาก 100
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getSyScpu
-
cpuidle = `vmstat 1 5 | sed -n '3, $ p' /n
| awk '{x = x + $ 15} สิ้นสุด {พิมพ์ x/5}' | awk -f '{พิมพ์ $ 1}'
cpunum = `echo" 100- $ cpuidle "| BC`
ก้อง $ cpunum
-
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา
การคัดลอกรหัสมีดังนี้:
CPU = `getSyscpu`
Echo "CPU ระบบคือ $ CPU"
ถ้า [$ CPU -GT 90]
แล้ว
-
echo "การใช้ CPU ของระบบมีขนาดใหญ่กว่า 90%"
-
อื่น
-
echo "การใช้ CPU ของระบบเป็นเรื่องปกติ"
-
FI
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
CPU ระบบคือ 87
การใช้งานระบบ CPU เป็นเรื่องปกติ
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
จากเอาต์พุตข้างต้นเราจะเห็นว่าอัตราการใช้ CPU ปัจจุบันของระบบเซิร์ฟเวอร์ Linux คือ 87%ซึ่งเป็นเรื่องปกติและไม่มีขีด จำกัด การเตือนมากกว่า 90%
4) คำสั่งแนะนำ
VMSTAT: ตัวย่อของสถิติ meomory เสมือนจริงซึ่งสามารถตรวจสอบหน่วยความจำเสมือนจริงของระบบปฏิบัติการกระบวนการและกิจกรรม CPU
พารามิเตอร์: -n หมายความว่าเมื่อข้อมูลส่วนหัวที่ส่งออกจะแสดงเพียงครั้งเดียวในระหว่างเอาต์พุตวัฏจักรเป็นระยะ
ตรวจจับพื้นที่ดิสก์ระบบ
การตรวจจับพื้นที่ดิสก์ระบบเป็นส่วนสำคัญของการตรวจจับทรัพยากรระบบ ในระหว่างการบำรุงรักษาระบบเรามักจะต้องตรวจสอบการใช้พื้นที่ดิสก์เซิร์ฟเวอร์ เนื่องจากธุรกิจบางแห่งจำเป็นต้องเขียนแผ่นโทรบันทึกหรือไฟล์ชั่วคราวได้ตลอดเวลาหากพื้นที่ดิสก์หมดลงจึงอาจทำให้ธุรกิจหยุดชะงัก ฟังก์ชั่นต่อไปนี้สามารถตรวจจับการใช้พื้นที่ดิสก์ของไดเรกทอรีในพื้นที่ดิสก์ระบบปัจจุบัน พารามิเตอร์อินพุตเป็นชื่อไดเรกทอรีที่ต้องตรวจพบใช้ DF เพื่อส่งออกข้อมูลการใช้พื้นที่ดิสก์ของระบบจากนั้นรับเปอร์เซ็นต์การใช้พื้นที่ดิสก์ของไดเรกทอรีผ่านการกรอง GREP และ AWK
การคัดลอกรหัสมีดังนี้:
ฟังก์ชั่น getDiskspc
-
ถ้า [$# -ne 1]
แล้ว
กลับ 1
FI
โฟลเดอร์ = "$ 1 $"
diskspace = `df -k | grep $ โฟลเดอร์ | awk '{พิมพ์ $ 5}' | awk -f% '{พิมพ์ $ 1}'
echo $ diskspace
-
การสาธิตตัวอย่าง:
1) โปรแกรมแหล่งที่มา (ไดเรกทอรีการตรวจจับคือ /boot)
การคัดลอกรหัสมีดังนี้:
โฟลเดอร์ = "/boot"
diskspace = `getDiskspc $ folder`
echo "พื้นที่ดิสก์โฟลเดอร์ System $ คือ $ diskspace%"
ถ้า [$ diskspace -gt 90]
แล้ว
-
echo "การใช้ดิสก์ระบบ (โฟลเดอร์ $) มีขนาดใหญ่กว่า 90%"
-
อื่น
-
echo "การใช้ดิสก์ระบบ (โฟลเดอร์ $) เป็นเรื่องปกติ"
-
FI
2) ผลลัพธ์ผลลัพธ์
การคัดลอกรหัสมีดังนี้:
พื้นที่ระบบ /บูตดิสก์คือ 14%
การใช้ดิสก์ระบบ (/boot) เป็นเรื่องปกติ
[dyu@xilinuxbldsrv shell] $
3) การวิเคราะห์ผลลัพธ์
ดังที่เห็นได้จากเอาต์พุตข้างต้น: ปัจจุบันพื้นที่ดิสก์ของไดเรกทอรี /บูตในระบบเซิร์ฟเวอร์ Linux นี้ถูกใช้โดย 14% ซึ่งเป็นเรื่องปกติและไม่มีขีด จำกัด การเตือนมากกว่าการใช้งาน 90%
4) คำสั่งแนะนำ
DF: ตรวจสอบการใช้พื้นที่ดิสก์ของระบบไฟล์ คำสั่งนี้สามารถใช้เพื่อรับข้อมูลเช่นพื้นที่ที่ฮาร์ดดิสก์มีพื้นที่เท่าไหร่และมีพื้นที่เหลือเท่าใด พารามิเตอร์: -K จะแสดงใน K ไบต์
สรุป
ภายใต้แพลตฟอร์ม Linux การตรวจสอบเชลล์สคริปต์เป็นวิธีที่ง่ายสะดวกและมีประสิทธิภาพในการตรวจสอบเซิร์ฟเวอร์และกระบวนการซึ่งมีประโยชน์มากในการพัฒนาระบบและบุคลากรการบำรุงรักษากระบวนการ ไม่เพียง แต่สามารถตรวจสอบข้อมูลข้างต้นและส่งสัญญาณเตือน แต่ยังตรวจสอบบันทึกกระบวนการและข้อมูลอื่น ๆ ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับทุกคน