สารบัญ:
- ขั้นตอนที่ 1: ใช้วิธีการที่ให้ไว้โดยSystemd
- ขั้นตอนที่ 2: การกำหนดค่าและการใช้ Service Checker Scripts
- ขั้นตอนที่ 3: ความคิดสุดท้าย
วีดีโอ: สคริปต์การตรวจสอบบริการสำหรับเซิร์ฟเวอร์ Linux: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
การมีระบบที่เสถียรและทำงานตลอดเวลา แม้ว่าคุณจะใช้ Linux อาจเป็นงานที่ยาก
เนื่องจากความซับซ้อนของแพ็คเกจซอฟต์แวร์ที่ทันสมัยและการเข้ารหัสที่ไม่ถูกต้อง กระบวนการบางอย่างอาจขัดข้องเป็นครั้งคราวอย่างหลีกเลี่ยงไม่ได้ นี่อาจเป็นสิ่งที่ไม่ดีหากคุณใช้งานเซิร์ฟเวอร์และบางคนพึ่งพาบริการเหล่านี้
ขั้นตอนที่ 1: ใช้วิธีการที่ให้ไว้โดยSystemd
อย่างที่คุณอาจทราบแล้วว่าระบบปฏิบัติการ Linux สมัยใหม่ส่วนใหญ่ใช้ systemd
หากคุณไม่คุ้นเคยกับ systemd นี่คือตามวิกิพีเดีย:
"… ระบบ init ที่ใช้ในลีนุกซ์ดิสทริบิวชันเพื่อบูตสแตรปพื้นที่ผู้ใช้และจัดการกระบวนการทั้งหมดในภายหลัง แทนที่จะเป็นระบบเริ่มต้นของ UNIX System V หรือ Berkeley Software Distribution (BSD) …"
ผู้คนจำนวนมากยังคงโต้เถียงกันว่าทำไมจึงจำเป็นต้องแทนที่ระบบ init แบบเก่าที่ดี ด้วยระบบการจัดการกระบวนการที่ซับซ้อนกว่านี้ แต่ในลิงก์ต่อไปนี้ อาจมีคำอธิบายที่ดี:
www.tecmint.com/systemd-replaces-init-in-l…
การปรับปรุงที่สำคัญที่สุดคือสามารถเรียกระบบได้เร็วกว่า init เนื่องจากการประมวลผลพร้อมกันและแบบขนานในการบูตแทนที่จะเป็นวิธีการแบบต่อเนื่องของ init
โดยไม่ต้องเข้าไปในส่วนลึกของ systemd ในการเพิ่มกระบวนการใน systemd คุณต้องสร้างไฟล์บริการ ไวยากรณ์ของไฟล์ดังกล่าวมีตั้งแต่แบบง่ายไปจนถึงซับซ้อนที่สุด และเราจะไม่ลงรายละเอียด เพื่อให้มีไฟล์.service พื้นฐาน ก็เพียงพอแล้วที่จะใช้รายการต่อไปนี้:
[หน่วย]คำอธิบาย=คำอธิบายของ applicationDocumentation=https://wikipedia.org/ After=local-fs.target network.target[Service]Type=simpleExecStart=/usr/sbin/applicationExecReload=/usr/sbin/application reloadExecStop=/ usr/sbin/application stopRestart=always[Install]WantedBy=multi-user.target
วางสิ่งเหล่านี้ลงในไฟล์ application.service ในโฟลเดอร์ /lib/systemd/system
มีการอธิบายสิ่งที่แต่ละตัวเลือกเหล่านี้ทำไว้ในลิงก์ต่อไปนี้:
access.redhat.com/documentation/en-US/Red_…
ในการเริ่มต้นแอปพลิเคชันของคุณ ให้ออกคำสั่งต่อไปนี้:
sudo systemctl start application.service
หมายเหตุ: สามารถละเว้นส่วนขยาย.service ได้
ในการหยุดแอปพลิเคชัน:
sudo systemctl หยุด application.service
หากไฟล์การกำหนดค่ามีการเปลี่ยนแปลงและคุณต้องการโหลดการตั้งค่าใหม่:
sudo systemctl รีโหลด application.service
ในการรีสตาร์ทแอปพลิเคชัน:
sudo systemctl รีสตาร์ท application.service
วิธีเปิดใช้งานการสตาร์ทอัตโนมัติเมื่อบู๊ต:
sudo systemctl เปิดใช้งาน application.service
หากเปิดใช้งานอยู่ ตัวจัดการกระบวนการ systemd จะพยายามเริ่มต้นแอปพลิเคชันตามการตั้งค่าที่ได้รับจากไฟล์ระบบ
หากต้องการปิดใช้งาน ให้ใช้คำสั่งเดียวกับด้านบน แต่มีพารามิเตอร์ 'disable'
หากคุณวาง Restart=always ในไฟล์บริการ systemd จะตรวจสอบกระบวนการและหากไม่พบในรายการกระบวนการ ระบบจะพยายามรีสตาร์ทโดยอัตโนมัติ
หากคุณวาง
รีสตาร์ทวินาที=30
หลังจากคำสั่งรีสตาร์ท จะรอ 30 วินาทีก่อนที่จะพยายามเริ่มกระบวนการใหม่ สิ่งนี้อาจมีประโยชน์ เนื่องจากความพยายามในการรีสตาร์ทอย่างต่อเนื่องของบริการ/แอปพลิเคชันที่ล้มเหลวอาจทำให้ระบบมีความต้องการสูง (การเขียนบันทึกข้อผิดพลาด ฯลฯ)
อย่างที่คุณเห็น systemd ได้จัดเตรียมวิธีการตรวจสอบกระบวนการไว้แล้ว อย่างไรก็ตาม ในบางกรณีอาจไม่เพียงพอ จะเกิดอะไรขึ้นหากกระบวนการไม่ออก (จะยังคงอยู่ในรายการกระบวนการ) แต่หยุดตอบสนอง ในกรณีนี้ เพื่อให้แน่ใจว่ากระบวนการทำงานจริง คุณอาจต้องตรวจสอบเพิ่มเติมเพื่อดำเนินการ
นี่คือที่ที่สคริปต์จากคำแนะนำนี้จะมีประโยชน์
ขั้นตอนที่ 2: การกำหนดค่าและการใช้ Service Checker Scripts
หากคุณต้องการควบคุมกระบวนการ/บริการที่ทำงานอยู่มากขึ้น สคริปต์เหล่านี้จะเป็นประโยชน์อย่างแน่นอน
เนื่องจากโค้ดมีขนาดใหญ่เล็กน้อย จึงอัปโหลดไปยัง github และสามารถพบได้ในที่เก็บต่อไปนี้:
github.com/trex2000/Service-Monitor-Scripts/blob/master/checkService.sh
'หัวใจ' ของแพ็คเกจทั้งหมดคือ
checkService.sh
ก่อนใช้งาน คุณต้องเปลี่ยนเส้นทางแบบเต็มไปยังโฟลเดอร์บริการ สามารถพบได้ที่จุดเริ่มต้นของสคริปต์
สคริปต์สามารถตรวจสอบกระบวนการต่างๆ และทำงานเพิ่มเติมได้ตามที่อธิบายไว้ด้านล่าง:
มันผ่านแต่ละไฟล์จากโฟลเดอร์ย่อย /services ที่มีนามสกุล.serv หรือ.check และจะตรวจสอบว่ามีกระบวนการที่ทำงานอยู่ที่เรียกว่า 'application' หรือไม่
หากไม่มีไฟล์ '.check' สำหรับแอปพลิเคชัน เฉพาะไฟล์ application.serv:
หากกระบวนการทำงานอยู่ จะถือว่ากระบวนการทำงานอยู่
หากกระบวนการนี้ไม่ได้ใช้งาน ก็จะเริ่มต้นบริการใหม่โดยใช้คำสั่งต่อไปนี้:
systemctl รีสตาร์ทแอปพลิเคชัน
ถ้าไฟล์.serv ว่างเปล่า!
หากไฟล์.serv ไม่ว่างเปล่าและมีสิทธิ์เรียกทำงาน ไฟล์จะพยายามเรียกใช้เป็นสคริปต์ BASH ธรรมดา
สิ่งนี้มีประโยชน์หากต้องทำสิ่งใดเพิ่มเติมนอกเหนือจากการเริ่มบริการใหม่
ตัวอย่างเช่น ในไฟล์ spamd.serv จาก repo ด้านบน ในกรณีที่บริการ spamd ไม่ทำงาน บริการ spamassassin จะต้องเริ่มใหม่แทน ซึ่งจะรีสตาร์ท spamd ด้วย การรีสตาร์ทเพียงสแปมจะไม่เพียงพอ
หนึ่งสามารถแก้ไขเนื้อหาของไฟล์ serv ดังกล่าวได้ตามความต้องการ
อีกตัวอย่างหนึ่งคือไฟล์ pcscd.serv ในกรณีนี้ กระบวนการอื่นๆ อีกหลายกระบวนการถูกรีสตาร์ท/หยุดทำงานเช่นกัน
หากมีไฟล์ตรวจสอบ หลังจากตรวจสอบว่ากระบวนการทำงานอยู่ ไฟล์สคริปต์นี้จะเรียกใช้ไฟล์สคริปต์นี้เพื่อทำการตรวจสอบเพิ่มเติมด้วย
ตัวอย่างเช่น สำหรับบริการ oscam เราได้สร้างไฟล์ตรวจสอบซึ่งพยายามเชื่อมต่อกับเว็บอินเตอร์เฟสเพื่อดูว่าสำเร็จหรือไม่ หากไม่เป็นเช่นนั้น แม้ว่าจะมีกระบวนการทำงานอยู่ บริการก็ไม่ตอบสนองและจำเป็นต้องเริ่มต้นใหม่ การเริ่มบริการใหม่จะต้องดำเนินการ/เรียกโดยไฟล์.check เอง
อีกตัวอย่างหนึ่งคือบริการ mediatomb DLNA
นี่คือเซิร์ฟเวอร์ขนาดเล็กที่ให้เนื้อหาวิดีโอ/เสียงแก่ไคลเอ็นต์ DLNA และออกอากาศเองบนเครือข่าย บางครั้งบริการหยุดทำงานและไม่สามารถค้นพบได้อีก แต่กระบวนการจะยังคงทำงานอยู่ เพื่อตรวจสอบว่าสามารถค้นพบบริการได้หรือไม่ มีการใช้ยูทิลิตี้ CLI ที่เรียกว่า gssdp-discover รหัสทั้งหมดที่ตรวจสอบเซิร์ฟเวอร์ DLNA ถูกวางไว้ในสคริปต์ mediatomb.check
นี่เป็นเพียงตัวอย่างเล็กๆ น้อยๆ เกี่ยวกับวิธีการใช้ไฟล์.serv และ.check ของคุณ
ในการตรวจสอบบริการใหม่ คุณต้องสร้าง.serv และหากจำเป็น ให้สร้างไฟล์ตรวจสอบและเขียนสคริปต์ที่เกี่ยวข้องไว้ข้างใน
หากเพียงตรวจสอบการมีอยู่ของกระบวนการหากเพียงพอ ไฟล์.serv ที่ว่างเปล่าก็เพียงพอแล้ว หากต้องทำการตรวจสอบเพิ่มเติม จะต้องสร้างไฟล์.check และต้องเขียนสคริปต์ขนาดเล็กเพื่อทำงาน
แน่นอน สคริปต์.sh จะต้องรันเป็นระยะ ดังนั้นงาน cron จะต้องถูกสร้างขึ้นด้วย:
#check เรียกใช้บริการทุก ๆ 5 นาที*/5 * * * * /var/bin/ServiceCheck/checkService.sh >/dev/null
ขั้นตอนที่ 3: ความคิดสุดท้าย
ฉันหวังว่าคุณจะพบว่าแพ็คเกจนี้มีประโยชน์เนื่องจากสามารถตรวจสอบกระบวนการ Linux ได้อย่างมากและหวังว่าจะช่วยลดเวลาหยุดทำงานของบริการของคุณ
อย่าลังเลที่จะอัปโหลดสคริปต์เพิ่มเติมไปยัง GitHub หากคุณสร้างสคริปต์ใหม่ เพียงแจ้งให้เราทราบ แล้วฉันจะเพิ่มคุณเป็นผู้ร่วมให้ข้อมูล
แนะนำ:
การปรับเปลี่ยน L-tek Dance Pad เพื่อโพลที่ 1000hz บน Windows และ Linux: 9 ขั้นตอน
การปรับเปลี่ยน L-tek Dance Pad เป็นโพลล์ที่ 1000hz บน Windows และ Linux: เหตุใดตัวดัดแปลงนี้จึงเป็นเช่นนั้น หากคุณเคยเลื่อนไปที่กราฟของเพลง 125 BPM คุณอาจสงสัยว่ามันเกิดอะไรขึ้นกับตัวแหลมนี้ เหตุใดเวลาจึงตกเป็น "สล็อต" แยกกัน?ITG และ DDR มีกรอบเวลาจำกัดอย่างไม่น่าเชื่อ และด้วยสิ่งนี้
Linux บน XE303C12 Chromebook: 7 ขั้นตอน
Linux บน XE303C12 Chromebook: สวัสดีในบทช่วยสอนนี้ ฉันจะแสดงวิธีบูต Kali Linux จากการ์ด SD บน Samsung Chromebook 1. นี่เป็นโครงการที่ยากมาก ดังนั้นโปรดอดทนไว้ ฉันจะรวมอีเมลไว้ด้วย ถ้าพวกคุณคนใดติดขัด โปรดส่งอีเมลถึงฉันและฉันจะพยายามช่วย
Arduino Browser Based Remote Control (linux): 9 ขั้นตอน (พร้อมรูปภาพ)
Arduino Browser Based Remote Control (linux): เรามีลูกแล้ว ฉันชอบมันมาก แต่พวกเขายังคงซ่อนรีโมทคอนโทรลสำหรับดาวเทียมและทีวีเมื่อพวกเขาเปิดช่องสำหรับเด็ก หลังจากสิ่งนี้เกิดขึ้นทุกวันเป็นเวลาหลายปีและหลังจากที่ภรรยาที่รักของฉันอนุญาตให้ฉันมี
การติดตั้งระบบย่อย Windows สำหรับ Linux (WSL): 3 ขั้นตอน
การติดตั้งระบบย่อย Windows สำหรับ Linux (WSL): ชุดคำสั่งนี้มีขึ้นเพื่อช่วยให้ผู้ใช้ติดตั้งระบบย่อย Windows สำหรับ Linux ลงในคอมพิวเตอร์ Windows 10 ของตน การกระจาย Linux เฉพาะที่ชุดคำสั่งนี้จะใช้เรียกว่า Ubuntu ดูภาพรวมของ Linux ต่างๆ ที่นี่
ตั้งค่า Linux สำหรับ Windows!: 12 ขั้นตอน
ตั้งค่า Linux สำหรับ Windows!: ยินดีต้อนรับสู่ชุดคำสั่งสำหรับการตั้งค่า Linux สำหรับ Windows! ชุดคำสั่งนี้มีขึ้นเพื่อช่วยให้ผู้เริ่มต้นตั้งค่าบรรทัดคำสั่งระบบ Ubuntu Linux บนเครื่อง Windows และเชื่อมต่อไฟล์ windows กับระบบ linux ระบบย่อยของลินุกซ์