บริการบน Linux ได้รับการจัดการผ่านไฟล์กำหนดค่า หากมีการแก้ไขไฟล์การกำหนดค่าของบริการ จำเป็นต้องเริ่มการรีสตาร์ทบริการเพื่อใช้การแก้ไข เมื่อเริ่มบริการใหม่ systemd จะประเมินไฟล์การกำหนดค่าอีกครั้งและใช้การแก้ไข
ในคู่มือนี้ ฉันจะอธิบายวิธีใช้ systemctl เพื่อรีสตาร์ทบริการใน Linux
บันทึก: คู่มือนี้ประกอบด้วยคำสั่งและคำแนะนำที่ดำเนินการบน Ubuntu 22.04 คำสั่งจะทำงานได้โดยไม่มีปัญหาใด ๆ กับการแจกแจงที่มาพร้อมกับตัวจัดการบริการ systemd
คำสั่ง systemctl รีสตาร์ท
ที่ เริ่มต้นใหม่ คำสั่งจะหยุดบริการและเริ่มต้นใหม่อีกครั้ง หากบริการหรือหน่วยไม่ทำงาน คำสั่งรีสตาร์ทจะเริ่มการทำงาน
คำสั่งรีสตาร์ทไม่ได้ลบกระบวนการที่เชื่อมโยงกับบริการ นำตัวอย่างของตัวอธิบายไฟล์ ซึ่งเป็นตัวระบุที่ไม่ใช่ค่าลบที่กำหนดโดยระบบปฏิบัติการให้กับไฟล์ที่เปิดโดยบริการ หากคุณเริ่มบริการใหม่ ตัวอธิบายไฟล์ที่เชื่อมโยงกับบริการนั้นจะยังคงอยู่ที่นั่นในระหว่างกระบวนการรีสตาร์ท
หากคุณต้องการล้างกระบวนการที่เชื่อมโยงกับบริการทั้งหมดออก คุณจะต้องดำเนินการอย่างชัดเจน หยุด การบริการและ เริ่ม มันอีกครั้ง
วิธีการเริ่มบริการใหม่
บน Linux คุณสามารถเริ่มบริการใหม่ได้โดยใช้ sudo systemctl เครื่องมือบรรทัดคำสั่งด้วย เริ่มต้นใหม่ ตัวเลือกและระบุชื่อ ไวยากรณ์ทั่วไปได้รับด้านล่าง:
ซูโดะ systemctl รีสตาร์ท [ ชื่อบริการ ]
คุณจะต้องการ ซูโดะ สิทธิ์ในการเริ่มบริการใหม่
ตัวอย่างเช่น เรามารีสตาร์ทกัน สช บริการ.
ซูโดะ systemctl รีสตาร์ท ssh.serviceหากต้องการรีสตาร์ทบริการหลายรายการ ให้เพิ่มชื่อบริการแต่ละชื่อต่อท้าย เริ่มต้นใหม่ สั่งการด้วยช่องว่าง
ซูโดะ systemctl รีสตาร์ท ssh.service smbd.serviceคำสั่งรีสตาร์ทอื่นๆ มีระบุไว้ในตารางด้านล่าง:
ลองรีสตาร์ท | มันหยุดหรือเริ่มบริการหรือบริการที่ระบุ และหากบริการไม่ได้ทำงานอยู่ ก็จะไม่เริ่มทำงาน |
โหลดใหม่หรือรีสตาร์ท | โหลดบริการหรือบริการที่รองรับอีกครั้ง และหากบริการไม่รองรับ ให้รีสตาร์ทและเปิดใช้งาน |
ลองโหลดใหม่หรือลองรีสตาร์ท | โหลดบริการหรือบริการที่รองรับอีกครั้ง และหากบริการไม่รองรับ ให้รีสตาร์ทโดยไม่เปิดใช้งาน |
ในคำสั่งข้างต้น .บริการ ส่วนขยายเป็นทางเลือก
วิธีรีสตาร์ทบริการโดยอัตโนมัติ
บน Linux หากบริการล้มเหลว แสดงว่า ระบบ รีสตาร์ทตามค่าเริ่มต้น อย่างไรก็ตาม ในหลายกรณี อาจจำเป็นต้องปรับเปลี่ยนลักษณะการรีสตาร์ทบริการ ตัวอย่างเช่น เราอาจต้องมีการดำเนินการโดยเจ้าหน้าที่ในระหว่างกระบวนการตรวจแก้จุดบกพร่องของบริการแบบกำหนดเอง
ไฟล์หน่วย systemd หรือไฟล์บริการตั้งอยู่บน /etc/systemd/system หรือ /lib/systemd/system ขึ้นอยู่กับวิธีการสร้างบริการเป็นหลัก หากต้องการแสดงรายการไฟล์หน่วยบน Linux ให้ใช้คำสั่งต่อไปนี้:
LS / lib / ระบบ / ระบบคุณสามารถดูไฟล์การกำหนดค่าของบริการต่างๆ มาเปิดกัน ssh.บริการ ไฟล์โดยใช้ นาโน บรรณาธิการ
ซูโดะ นาโน / lib / ระบบ / ระบบ / ssh.บริการที่นี่คุณสามารถแก้ไข เริ่มต้นใหม่ การตั้งค่า โดยค่าเริ่มต้น จะถูกตั้งค่าเป็น เมื่อล้มเหลว . ตัวเลือกอื่นในการเริ่มบริการใหม่มีดังต่อไปนี้:
- เลขที่
- เสมอ
- ในความสำเร็จ
- เมื่อล้มเหลว
- เมื่อผิดปกติ
- เมื่อทำแท้ง
- ในสุนัขเฝ้าบ้าน
ตัวเลือกอื่นในไฟล์บริการหน่วยคือ รีสตาร์ทวินาที ซึ่งใช้เพื่อระบุจำนวนวินาทีหลังจากที่บริการจะรีสตาร์ท
[ บริการ ]เริ่มต้นใหม่ =เสมอ
รีสตาร์ทวินาที = 5
คำแนะนำเหล่านี้หมายความว่าบริการจะรีสตาร์ทเมื่อบู๊ตเครื่อง และหากถูกขัดจังหวะ บริการจะรีสตาร์ทหลังจากผ่านไป 5 วินาที
หลังจากแก้ไขการตั้งค่าแล้ว ให้ดำเนินการคำสั่งต่อไปนี้เพื่อใช้การเปลี่ยนแปลง
ซูโดะ systemctl รีโหลด daemonการตั้งค่าที่สำคัญอื่น ๆ ที่ต้องคำนึงถึงคือ StartLimitIntervalSec และ เริ่มจำกัดการระเบิด . ตัวเลือกเหล่านี้มีประโยชน์ในการตั้งเวลาสูงสุดและความพยายามสูงสุดในการเริ่มบริการใหม่
[ หน่วย ]StartLimitIntervalSec = 300
เริ่มจำกัดการระเบิด = 4
คำแนะนำข้างต้นบ่งชี้ว่า systemd จะหยุดการพยายามรีสตาร์ทบริการโดยอัตโนมัติ หากไม่เริ่มทำงานหลังจาก 300 วินาทีและลองใหม่ 4 ครั้ง
หากต้องการตรวจสอบว่าบริการรีสตาร์ทหลังจากผ่านไป 5 วินาทีหรือไม่ ให้ปิดบริการโดยใช้ PID ของบริการและ ฆ่า สั่งการ.
ซูโดะ ฆ่า -9 [ พีไอดี ]หลังจากผ่านไป 5 วินาที บริการจะเริ่มต้นใหม่ ใช้ วารสาร คำสั่งให้ตรวจสอบสถานะของ ssh.บริการ .
วารสาร -ใน ssh.บริการ
วิธีการเริ่มบริการใหม่เมื่อบริการที่ขึ้นต่อกันเริ่มระบบใหม่
บน Linux บริการจำนวนมากต้องพึ่งพาอาศัยกัน และในทำนองเดียวกัน จำเป็นต้องรีสตาร์ทเมื่อบริการที่ต้องพึ่งพาถูกรีสตาร์ท
มีตัวเลือกที่แตกต่างกันสามตัวเลือกในไฟล์บริการหน่วยเพื่อเริ่มบริการใหม่ โดยเริ่มบริการที่ขึ้นต่อกันใหม่
- เป็นส่วนหนึ่งของ
- BindsTo
- กำหนดให้มี
ตัวเลือกทั้งหมดเหล่านี้ทำงานเดียวกัน
มาดูตัวอย่างของ ssh.service ซึ่งขึ้นอยู่กับ apparmor.service โมดูลความปลอดภัยของ Linux เพื่อให้การเข้าถึงที่จำเป็น เพื่อแสดงรายการการขึ้นต่อกันของบริการใน Linux ให้ใช้ ระบบ กับ การขึ้นต่อกันของรายการ ชื่อคำสั่งและบริการ
รายการ systemctl-การพึ่งพา ssh.service
ดังนั้น หากคุณต้องการรีสตาร์ท ssh.service เมื่อคุณรีสตาร์ท apparmor.service คุณจะต้องรวมตัวเลือก PartOf, BindsTo หรือ Requires ไว้พร้อมกับชื่อบริการในส่วน [Unit] ของไฟล์ apparmor.service
เปิดไฟล์ apparmor.service
ซูโดะ นาโน / lib / ระบบ / ระบบ / apparmor.บริการเพิ่มบรรทัดต่อไปนี้ในส่วน [หน่วย]
เป็นส่วนหนึ่งของ =ssh.บริการ
บันทึกไฟล์และดำเนินการคำสั่ง daemon-reload
ซูโดะ systemctl daemon-รีโหลดตอนนี้ให้เริ่มต้นใหม่ ssh.บริการ แล้วตรวจสอบ apparmor.บริการ บันทึก.
คุณจะสังเกตได้ว่า apparmor.บริการ เริ่มต้นใหม่ในเวลาเดียวกัน ssh.บริการ เริ่มต้นใหม่
บทสรุป
หากต้องการรีสตาร์ทบริการหรือบริการบน Linux ให้ทำดังนี้ ระบบ คำสั่งใช้กับ เริ่มต้นใหม่ ตัวเลือก. ที่ ระบบ เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งที่ใช้เพื่อจัดการบริการ systemd ที่ เริ่มต้นใหม่ ตัวเลือกเริ่มบริการแล้วหยุด โดยเปิดใช้งานบริการที่ไม่ได้ใช้งาน อย่างไรก็ตาม คุณสามารถเริ่มบริการใหม่ได้โดยไม่ต้องเปิดใช้งานโดยใช้ ลองรีสตาร์ท ตัวเลือก.