ตอนนี้ระบบ systemd init เป็นส่วนหนึ่งของลีนุกซ์รุ่นต่างๆ เกือบทั้งหมดแล้ว ในฐานะผู้ดูแลระบบหรือนักพัฒนา คุณสร้างบริการที่ systemd สามารถจัดการได้ ตัวอย่างเช่น หากคุณต้องการเปิดบริการขณะบูตหรือต้องการควบคุมด้วยตนเอง ก็สามารถทำได้ผ่านไฟล์บริการที่กำหนดเอง
ในบทช่วยสอนนี้ ฉันจะอธิบายวิธีสร้างไฟล์บริการ systemd บน Linux
ไฟล์บริการคืออะไร
ก่อนที่จะไปไกลกว่านี้ มาทำความเข้าใจก่อนว่าไฟล์บริการ systemd คืออะไร และมันถูกสร้างขึ้นบน Linux อย่างไร
ไฟล์บริการ systemd มีชุดคำสั่งสำหรับ systemd เพื่อจัดการบริการ โดยทั่วไปจะประกอบด้วยสามส่วน:
- หน่วย
- บริการ
- ติดตั้ง
ที่ หน่วย ส่วนประกอบด้วยข้อมูลพื้นฐานเกี่ยวกับบริการ เช่น คำอธิบายสั้น ๆ หน้าเอกสารประกอบ และเส้นทางสู่การอ้างอิง ที่ ติดตั้ง ส่วนนี้เป็นทางเลือก แต่โดยทั่วไปจะจัดการสถานะระบบที่ควรเปิดใช้งานบริการ
ที่ บริการ โดยปกติแล้วส่วนนี้จะประกบระหว่างส่วนยูนิตและส่วนการติดตั้ง โดยพื้นฐานแล้วจะมีประเภทของบริการและเส้นทางของไฟล์ปฏิบัติการที่โดยพื้นฐานแล้วคือคำสั่งในการดำเนินการเมื่อเรียกใช้บริการโดย systemd
โครงสร้างไฟล์บริการทั่วไปมีลักษณะดังนี้
- หน่วย -
คำสั่ง1 = คำแนะนำ
คำสั่ง2 = คำแนะนำ
-
- บริการ -
คำสั่ง1 = คำแนะนำ
คำสั่ง2 = คำแนะนำ
-
- ติดตั้ง -
คำสั่ง1 = คำแนะนำ
คำสั่ง2 = คำแนะนำ
-
ในที่นี้ คำสั่งคือพารามิเตอร์ที่รับอินพุตตามลำดับ ตัวอย่างเช่น คำอธิบาย คำสั่งรับสตริงชื่อของบริการ ในทำนองเดียวกัน เอ็กเซ็กสตาร์ท คำนึงถึงเส้นทางที่สมบูรณ์ของไฟล์ปฏิบัติการ
ไฟล์บริการทั่วไปของ ssh.บริการ ได้รับด้านล่าง
วิธีสร้างไฟล์บริการ
ในการสร้างบริการ systemd จำเป็นต้องเข้าใจคำสั่งหลัก ในคู่มือนี้ ฉันจะกล่าวถึงคำสั่งสำคัญที่สามารถช่วยคุณสร้างไฟล์บริการที่ทำงานได้อย่างสมบูรณ์
การสร้างไฟล์บริการมีหลายขั้นตอน มาเริ่มกันที่การสร้างไฟล์สคริปต์กัน
บันทึก: หากต้องการดำเนินการตามวิธีที่กล่าวถึงด้านล่าง คุณต้องมีสิทธิ์ใช้งานรูท
1. การสร้างสคริปต์
ขั้นตอนเริ่มต้นเกี่ยวข้องกับการสร้างโค้ดที่จะดำเนินการเมื่อบริการเริ่มดำเนินการ สำหรับบทช่วยสอนนี้ ฉันกำลังสร้างสคริปต์ทุบตีที่จะจัดเก็บสถานะการออนไลน์ของระบบ Linux และการใช้งานหน่วยความจำ
มาสร้างสคริปต์ในไดเร็กทอรีปัจจุบันด้วยชื่อ myscript.sh ใช้โปรแกรมแก้ไขนาโน
ซูโดะ นาโน myscript.shตอนนี้เพิ่มสคริปต์ที่ระบุด้านล่างในไฟล์และบันทึกโดยกด Ctrl+x แล้ว และ -
#!/bin/bashเสียงสะท้อน '>>นี่คือสถานะการออนไลน์ของระบบของคุณ<<' - บ้าน - ตัวเขาเอง - myfile.txt
เวลาทำงาน - บ้าน - ตัวเขาเอง - myfile.txt
เสียงสะท้อน '>>นี่คือการใช้หน่วยความจำของระบบของคุณ<<' - - บ้าน - ตัวเขาเอง - myfile.txt
ฟรี -ม - บ้าน - ตัวเขาเอง - myfile.txt
นอน 60
สคริปต์ประกอบด้วยสตริง echo สองสามรายการและ เวลาทำงาน และ ฟรี คำสั่ง
ที่ เวลาทำงาน คำสั่งบน Linux ใช้เพื่อพิมพ์ระยะเวลาที่ระบบทำงาน และจำนวนผู้ใช้ที่เชื่อมต่อกับโหลดระบบโดยเฉลี่ย 1, 5 และ 15 นาทีที่ผ่านมา
ที่ ฟรี คำสั่งจะใช้ในการพิมพ์การใช้หน่วยความจำของระบบในขณะที่ -ม flag ใช้ในการพิมพ์เอาท์พุต MB -
ในการบันทึกข้อมูลในไฟล์ข้อความ เราใช้ตัวดำเนินการพิเศษที่เรียกว่าตัวดำเนินการเปลี่ยนเส้นทาง ที่ - โอเปอเรเตอร์ใช้ในการแทรกข้อความลงในไฟล์ข้อความดังกล่าว อย่างไรก็ตาม หากไม่มีไฟล์อยู่แล้ว ไฟล์นั้นจะถูกสร้างขึ้น ในขณะที่ - โอเปอเรเตอร์ใช้ในการต่อท้ายข้อความในไฟล์ ที่ นอน คำสั่งถูกใช้เพื่อรักษากิจกรรมของบริการไว้เป็นระยะเวลาขั้นต่ำหนึ่งนาที
ตอนนี้ทำให้สคริปต์สามารถทำงานได้โดยให้สิทธิ์ที่จำเป็น
ซูโดะ โครโมด +x myscript.shขณะนี้สคริปต์มีสิทธิ์ดำเนินการแล้ว เรามาดำเนินการในส่วนถัดไปกันดีกว่า
บันทึก: หากต้องการทำให้ไฟล์บริการปราศจากข้อผิดพลาด ให้ใช้พาธสัมบูรณ์ของไฟล์ในสคริปต์ทุบตี
2. การสร้างไฟล์ .service
จากนั้นสร้างไฟล์บริการด้วยนามสกุล .บริการ ส่วนขยาย. ไฟล์บริการจะต้องสร้างในรูปแบบ /etc/systemd/system ไดเรกทอรี ขั้นแรก นำทางไปยังไดเร็กทอรีนี้โดยใช้ไฟล์ ซีดี สั่งการ.
ซีดี - ฯลฯ - ระบบ - ระบบคุณสามารถสร้างไฟล์บริการในไดเร็กทอรีใดก็ได้ และย้ายไฟล์นั้นไปยังไดเร็กทอรีนี้ในภายหลัง
ฉันกำลังสร้างไฟล์บริการด้วย myservice.service ชื่อ.
ซูโดะ นาโน myservice.serviceตอนนี้ให้เพิ่มบรรทัดต่อไปนี้ลงในไฟล์
- หน่วย -คำอธิบาย = บริการของฉัน
- บริการ -
พิมพ์ = เรียบง่าย
เอ็กเซ็กสตาร์ท - - ถังขยะ - ทุบตี - บ้าน - ตัวเขาเอง - script.sh
เริ่มต้นใหม่ = เมื่อล้มเหลว
- ติดตั้ง -
ต้องการโดย =ผู้ใช้หลายรายเป้าหมาย
โปรดทราบว่า [หน่วย], [บริการ], และ [ติดตั้ง] เป็น กรณีที่สำคัญ - ไฟล์บริการจะไม่ทำงานหากมีการกล่าวถึงอย่างไม่ถูกต้อง เช่น [UNIT] หรือ [SERVICE]
ชื่อบริการระบุเป็น บริการของฉัน ใน คำอธิบาย คำสั่งของ [หน่วย] ส่วน.
ที่ พิมพ์ ของการบริการก็คือ เรียบง่าย ใน [บริการ] ส่วนซึ่งเป็นประเภทเริ่มต้น การฟอร์ก - นัดเดียว - แจ้ง - ดีบัส และ idle ก็เป็นอีกประเภทหนึ่ง
หากคุณต้องการทำให้ผู้ใช้บริการมีความเฉพาะเจาะจง ผู้ใช้ คำสั่งยังสามารถใช้กับชื่อผู้ใช้ของผู้ใช้ได้ การใช้คำสั่งนี้จะทำให้การอนุญาตของผู้ใช้บริการขึ้นอยู่กับ
ในขณะที่ เอ็กเซ็กสตาร์ท คำสั่งประกอบด้วยเส้นทางแบบเต็มของไฟล์ปฏิบัติการ ในตัวอย่างข้างต้นคือไฟล์สคริปต์ myscript.sh ถูกเก็บไว้ใน /home/แซม/ ไดเรกทอรี ในความเป็นจริงคำสั่งนี้จัดการสิ่งที่จะดำเนินการเมื่อมีการเรียกใช้บริการโดย systemd หากไม่ได้ระบุเส้นทางแบบเต็มของคำสั่งคำสั่งจะได้รับการแก้ไขโดยอัตโนมัติเพื่อแก้ไขเส้นทางที่แน่นอนเช่น /usr/local/bin - /usr/bin/, และ /bin - เป็นการดีอย่างยิ่งที่จะใช้ชื่อที่ปฏิบัติการได้ ตราบใดที่ชื่อเหล่านั้นอยู่ในไดเร็กทอรีคำสั่งมาตรฐาน อย่างไรก็ตาม ให้ระบุเส้นทางที่แน่นอนเป็นอย่างอื่น โปรดทราบว่าสามารถใช้หลายคำสั่งได้โดยคั่นด้วยเครื่องหมายอัฒภาค (;)
ที่ [ติดตั้ง] ส่วนนี้เป็นทางเลือก แต่จะระบุวิธีการเปิดใช้งานบริการ ที่ ต้องการโดย คำสั่งใช้ไฟล์เป้าหมายระดับการทำงานเป็นพารามิเตอร์ ไฟล์เป้าหมายต่างๆ ระบุระดับการทำงานที่แตกต่างกันของระบบ เช่น ปิด - กู้ภัย - ผู้ใช้หลายคน - แบบกราฟิก , และ รีบูต -
ที่ ผู้ใช้หลายรายเป้าหมาย หมายถึงบริการจะถูกเปิดใช้งานเมื่อระบบอยู่ในสถานะที่อนุญาตเซสชันที่ไม่ใช่แบบกราฟิกที่มีผู้ใช้หลายราย
3. การเปิดใช้งานบริการ
หากต้องการเปิดใช้งานบริการ ขั้นแรกให้โหลดการกำหนดค่า systemd ใหม่โดยใช้ ระบบ คุณประโยชน์.
ซูโดะ systemctl daemon-รีโหลดจากนั้นเปิดใช้งานบริการอีกครั้งโดยใช้ ระบบ สั่งการด้วย เปิดใช้งาน -
ซูโดะ ระบบ เปิดใช้งาน myservice.serviceหากต้องการยืนยันให้ตรวจสอบสถานะของบริการโดยใช้ สถานะ systemctl สั่งการ.
บริการทำงานได้สำเร็จ
ตอนนี้เรามาอ่านไฟล์ข้อความกันดีกว่า myfile.txt บริการที่สร้างขึ้นใน /บ้าน ไดเรกทอรี
วิธีสร้างไฟล์บริการ Systemd สำหรับผู้ใช้ทั่วไป
ขั้นตอนการสร้างไฟล์บริการสำหรับผู้ใช้ทั่วไปจะคล้ายกับวิธีการสร้างไฟล์บริการโดยผู้ดูแลระบบ อย่างไรก็ตาม ไดเร็กทอรีสำหรับบันทึกไฟล์บริการสำหรับผู้ใช้ทั่วไปจะแตกต่างออกไป ผู้ใช้ทั่วไปจะต้องวางไฟล์บริการของตนไว้ในไฟล์ ~/.config/systemd/user - ไดเร็กทอรีนี้จะต้องสร้างโดยใช้ไฟล์ mkdir สั่งการ.
mkdir - - .กำหนดค่า - ระบบ - ผู้ใช้เพื่อเปิดใช้งานบริการโดยผู้ใช้ปกติ –ผู้ใช้ คำสั่งถูกแทรกด้วย ระบบ แทน ซูโดะ -
ระบบ --ผู้ใช้ daemon-รีโหลดระบบ --ผู้ใช้ เปิดใช้งาน บริการ-NAME.service
ระบบ --ผู้ใช้ สถานะ SERVICE-NAME.service
ที่ –ผู้ใช้ ตัวเลือกนี้ใช้เพื่อจัดการไฟล์บริการ systemd ของผู้ใช้
วิธีลบไฟล์บริการ
หากต้องการลบไฟล์บริการ ขั้นแรก จะต้องหยุดบริการก่อน
ซูโดะ systemctl หยุด SERVICE-NAME.serviceตรวจสอบสถานะการใช้งาน สถานะ systemctl คำสั่งให้ทราบว่าบริการหยุดหรือไม่ จากนั้นลบไฟล์บริการโดยใช้นามสกุล RM สั่งการ.
ซูโดะ RM - ฯลฯ - ระบบ - ระบบ - บริการ-NAME.serviceตอนนี้โหลดซ้ำ ระบบ การกำหนดค่า
ซูโดะ systemctl daemon-รีโหลดบทสรุป
บริการ systemd แบบกำหนดเองมีข้อได้เปรียบในสถานการณ์ต่างๆ ในคู่มือนี้ เราได้เรียนรู้วิธีสร้างไฟล์บริการ systemd แบบกำหนดเองสำหรับผู้ดูแลระบบ และวิธีที่ผู้ใช้ทั่วไปสามารถสร้างไฟล์บริการได้ นอกจากนี้เรายังเห็นขั้นตอนการลบไฟล์บริการอีกด้วย