systemd เป็นผู้จัดการงาน หน้าคนไม่แม่นยำมากเป็นสิ่งที่ทำงาน
เมื่อคุณบูตสิ่งที่ systemd ทำคือการสร้างธุรกรรมที่ประกอบด้วยงานสำหรับงาน anchor (เช่นงานเริ่มต้นสำหรับ default.target) สิ่งที่การพึ่งพาและความสัมพันธ์เหล่านี้ทำคือการกำหนดวิธีการทำงาน การสั่งซื้อจะกำหนดว่างานใดที่จะรอ หน่วย default.target จึงเป็นศูนย์กลางของทั้งหมดนี้ซึ่งเป็นเหตุผลที่เมื่อเปิดใช้งานหน่วยที่คุณใช้การพึ่งพาย้อนกลับซึ่งผ่าน systemctl เปิดใช้งานการสร้างการเชื่อมโยงสัญลักษณ์ระบบแฟ้มแสดงถึงการพึ่งพาไปข้างหน้า systemd สามารถปฏิบัติตาม ที่แรก). ที่คล้ายกันคือเมื่อคุณเริ่มบางหน่วยด้วยตนเองจากนั้นหน่วยที่ยึดและการทำธุรกรรมจะถูกคำนวณมัน
ฉันจะอธิบายสิ่งที่ต้องทำ = และ After =
ต้องการ = จะทำให้ systemd ทริกเกอร์งานเริ่มต้นสำหรับหน่วยที่ต้องการเมื่อคุณได้รับงานเริ่มต้นที่ถูกทริกเกอร์ (อย่างชัดเจนหรือผ่านการพึ่งพา: ไม่มีความแตกต่างภายใน) นอกจากนี้ยังมีคุณสมบัติในการทริกเกอร์งานหยุดที่คุณเมื่อหน่วยนี้หยุดทำงาน (หมายเหตุ: หยุดไม่ลงไปเอง) หรือรีสตาร์ท ซึ่งหมายความว่าหากการพึ่งพา / systemctl ทำให้หยุด / รีสตาร์ทคุณจะหยุด / รีสตาร์ท อย่างไรก็ตามถ้ามันลงไปเองคุณจะไม่หยุดเพราะไม่มีงานและการเปลี่ยนแปลงสถานะเกิดขึ้นโดยไม่ต้องมีส่วนร่วมของ systemd นั่นคือสิ่งที่คุณจะใช้ BindsTo = (คล้ายกับหน่วยอุปกรณ์ซึ่งสามารถใช้งานได้โดยไม่ต้องมีส่วนร่วมของ systemd ด้วยเหตุผลที่ชัดเจน)
ตอนนี้แนะนำให้ใช้ After = ตามต้องการ = alone คือความมีชีวิตชีวาสำหรับสิ่งที่มันทำ: ยกเลิกความต้องการหากงานเริ่มต้นล้มเหลว การยกเลิกนี้ใช้ได้เฉพาะกับงาน wrt เท่านั้นเช่นหากหน่วยอื่นไม่ได้กำหนดการสั่งซื้อ systemd จะทริกเกอร์ทั้งคู่ขนานและหากงานเริ่มต้นเสร็จสิ้นก่อนที่งานเริ่มต้นของคุณจะล้มเหลวก็จะไม่ถูกยกเลิก (อันที่จริงแล้วไม่สามารถยกเลิกได้) . การใช้ After = หมายถึงงานอื่น ๆ รอต่อไปจนกระทั่งงานเริ่มของหน่วยที่ต้องการเสร็จสิ้นและขึ้นอยู่กับผลลัพธ์หากล้มเหลวงานเริ่มต้นการรอของหน่วยของคุณจะถูกยกเลิกด้วยผลงาน JOB_DEPENDENCY (ทำไมคุณใช้สีเหลือง [DEPEND] ที่บูตสำหรับกรณีดังกล่าว) ดังนั้นผลการทำให้เป็นโมฆะนี้ไม่ได้กำหนดไว้โดยไม่ใช้ After =
นี่คือเหตุผลที่ใช้ Wants = ไม่มี After = เป็นเรื่องปกติถ้าคุณไม่ต้องการรอการเริ่มต้นของหน่วยอื่น: เนื่องจากไม่มีการทำให้ใช้งานไม่ได้ดังนั้นจึงไม่มีการแข่งขัน ในกรณีนี้มันไม่ได้เป็นมากกว่ากลไกการประสาน
นอกจากนี้คุณยังสามารถเปิดใช้งานทั้งตอนบูตและไม่จำเป็นต้องใช้ซึ่งกันและกันและกำหนดการสั่งซื้อเท่านั้นในกรณีนั้นเมื่อทั้งคู่ถูกดึงเป็นส่วนหนึ่งของการทำธุรกรรมเดียวกันพวกเขาจะได้รับคำสั่ง (หรือถ้างานอื่นถูกเรียก ในขณะที่งานสำหรับหน่วยที่ต้องการทำงานหลังจากที่ทำงานมันจะรอให้เสร็จก่อนผ่านธุรกรรม)
ตอนนี้หากไม่มีงานการสั่งซื้อจะไม่มีผลกับหน่วยงานดังกล่าว อย่างไรก็ตามมักจะมีงานเป็นผลมาจากการใช้การพึ่งพาเช่น Need = และ Wants = หรือทั้งสองได้รับการดึงในเวลาและกำหนดบางคำสั่งซึ่งในกรณีที่พวกเขารองานของหน่วยอื่น