สิ่งที่มูนีร์พูดถึงคือสิ่งที่คุณทำ โดยทั่วไปคุณสร้างservice
ไฟล์และเริ่มต้น 30 ครั้ง ตอนนี้อาจดูไม่ธรรมดาสักหน่อย แต่ก็มีข้อดีเช่นสามารถปิดหนึ่งในนั้นได้หากมันทำงานผิดปกติและไม่จำเป็นต้องปิดพวกเขาทั้งหมดลง นอกจากนี้ยังมีบางสิ่งที่คุณสามารถทำได้เพื่อทำให้การจัดการง่ายขึ้น
ก่อนอื่นไฟล์หน่วย /etc/systemd/system/test@.service
สร้างไฟล์เช่น บิตที่สำคัญคือ@
สัญลักษณ์
เนื้อหาอาจมีลักษณะ:
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=multi-user.target
จากนั้นเริ่มต้นด้วย,systemctl start test@1.service
กระบวนการที่เปิดตัวจะมีลักษณะดังนี้:systemctl start test@2.service
root 17222 19 0 0.0 0.0 Ss 00:05 /bin/sleep 600 1
root 17233 19 0 0.0 0.0 Ss 00:02 /bin/sleep 600 2
โปรดสังเกตว่าการที่%I
ถูกแทนที่ด้วยสิ่งที่คุณใส่หลังจาก@
เมื่อคุณเริ่มมัน
คุณสามารถเริ่มต้นทั้ง 30 ด้วย shell-fu เล็กน้อย:
systemctl start test@{1..30}.service
systemctl enable test@1.service
นอกจากนี้คุณยังสามารถช่วยให้พวกเขาที่บูตเช่นบริการตามปกติใด ๆ
ตอนนี้สิ่งที่ฉันหมายถึงสิ่งที่คุณสามารถทำได้เพื่อให้การจัดการง่ายขึ้น: บางทีคุณอาจไม่ต้องการใช้test@{1..30}.service
เพื่อจัดการมันทั้งหมด มันเป็นเรื่องเล็กน้อยเทอะทะ คุณสามารถสร้างเป้าหมายใหม่สำหรับบริการของคุณแทน
สร้าง/etc/systemd/system/test.target
ด้วย:
[Install]
WantedBy=multi-user.target
จากนั้นปรับ/etc/systemd/system/test@.service
เพื่อให้ดูเหมือนว่า:
[Unit]
StopWhenUnneeded=true
[Service]
ExecStart=/bin/sleep 600 %I
[Install]
WantedBy=test.target
โหลด systemd อีกครั้งด้วยsystemctl daemon-reload
(จำเป็นเฉพาะเมื่อคุณแก้ไขไฟล์หน่วยและไม่ข้ามรุ่นก่อนหน้า) systemctl enable test@{1..30}.service
และตอนนี้เปิดใช้งานบริการทั้งหมดที่คุณต้องการที่จะได้รับการจัดการโดยการทำ
(หากคุณเคยเปิดใช้งานบริการก่อนหน้านี้ให้WantedBy=multi-user.target
ปิดการใช้งานก่อนเพื่อล้างการพึ่งพา)
ตอนนี้คุณสามารถทำได้systemctl start test.target
และsystemctl stop test.target
มันจะเริ่ม / หยุดกระบวนการทั้ง 30 และอีกครั้งที่คุณสามารถเปิดใช้งานที่บูตเช่นไฟล์หน่วยงานอื่นใด:
systemctl enable test.target