เป้าหมายบริการและซ็อกเก็ตของ systemd คืออะไร


35

ฉันรู้ว่าพวกเขาทั้งหมดเป็นไฟล์หน่วย แต่ฉันไม่สามารถเข้าใจความหมายพิเศษของพวกเขา ฉันคิดว่าเป้าหมายนั้นคล้ายกับ daemons และซ็อกเก็ตเหมือนกันกับซ็อกเก็ต (IP + พอร์ต) แต่ยังมีหมายเลขไอโหนด ใครช่วยอธิบายด้วยคำพูดง่ายๆได้บ้าง?


3
manหน้าsystemd เป็นแบบอย่าง: คุณเคยดูman systemd.{service,socket,target}บ้างไหม?
jasonwryan

@ jasonwryan จริงๆแล้วฉันดูแล้วไม่มีคำตอบเต็ม ฉันกำลังดูหัวข้อนี้เพื่อให้ฉันสามารถเรียนรู้ได้ด้วย ฉันรู้ว่าบริการคืออะไรซ็อกเก็ต แต่มีช่องว่างเมื่อมันมาถึงเป้าหมาย ฉันยังคงค้นคว้าและจะตอบคำถามถ้ามันชัดเจนเพียงพอสำหรับฉัน
LD James

คำตอบ:


40

หน่วยบริการ:

A unit configuration file whose name ends in .service encodes
information about a process controlled and supervised by systemd.

- systemd.service (5)

หน่วยบริการ Systemd คือหน่วยที่ดำเนินการและติดตามโปรแกรมและ daemons จริง ๆ และมีการใช้การอ้างอิงเพื่อให้แน่ใจว่าบริการจะเริ่มขึ้นในลำดับที่ถูกต้อง เป็นหน่วยประเภทที่ใช้บ่อยที่สุด

หน่วยซ็อกเก็ต:

A unit configuration file whose name ends in ".socket" encodes
information about an IPC or network socket or a file system FIFO
controlled and supervised by systemd, for socket-based activation.

- systemd.socket (5)

หน่วยซ็อกเก็ตในทางกลับกันไม่ได้เริ่ม daemons ด้วยตนเอง แต่พวกเขานั่งอยู่ตรงนั้นและฟังที่อยู่ IP และพอร์ตหรือซ็อกเก็ตโดเมน UNIX และเมื่อมีบางสิ่งเชื่อมต่ออยู่ภูตที่ซ็อกเก็ตจะเริ่มทำงานและการเชื่อมต่อจะถูกส่งไป

สิ่งนี้มีประโยชน์สำหรับการตรวจสอบให้แน่ใจว่า daemons ขนาดใหญ่ที่ใช้ทรัพยากรจำนวนมาก แต่ไม่ค่อยได้ใช้ไม่ได้ทำงานและใช้ทรัพยากรอยู่ตลอดเวลา แต่จะเริ่มต้นเมื่อจำเป็นเท่านั้น

หน่วยเป้าหมาย:

A unit configuration file whose name ends in ".target" encodes
information about a target unit of systemd, which is used for grouping
units and as well-known synchronization points during start-up.

- systemd.target (5)

เป้าหมายใช้สำหรับการจัดกลุ่มและการสั่งซื้อหน่วย พวกมันค่อนข้างจะเทียบเท่ากับระดับน้ำท่วมที่เป้าหมายที่แตกต่างกันบริการที่แตกต่างซ็อกเก็ตและหน่วยอื่น ๆ จะเริ่มขึ้น ซึ่งแตกต่างจาก runlevels พวกเขามีรูปแบบอิสระมากขึ้นและคุณสามารถสร้างเป้าหมายของคุณเองสำหรับการสั่งซื้อหน่วยและเป้าหมายมีการพึ่งพาระหว่างกัน

ตัวอย่างเช่นmulti-user.targetสิ่งที่ daemons ส่วนใหญ่ถูกจัดกลุ่มไว้ใต้และต้องbasic.targetเปิดใช้งานซึ่งหมายความว่าบริการทั้งหมดที่จัดกลุ่มไว้ภายใต้basic.targetจะเริ่มต้นก่อนที่จะเข้าmulti-user.targetมา


11

เอกสารสำหรับ systemd นั้นยอดเยี่ยมสำหรับโครงการที่ค่อนข้างใหม่ ในการเริ่มต้นด้วยเป้าหมายจากman systemd.target :

หน่วยเป้าหมายไม่เสนอฟังก์ชันเพิ่มเติมใด ๆ นอกเหนือจากฟังก์ชันทั่วไปที่มีให้โดยหน่วย มีเพียงการจัดกลุ่มหน่วยผ่านการพึ่งพา (มีประโยชน์เป็นเป้าหมายการบูต) และเพื่อสร้างชื่อมาตรฐานสำหรับจุดการซิงโครไนซ์ที่ใช้ในการพึ่งพาระหว่างหน่วย เหนือสิ่งอื่นใดหน่วยเป้าหมายคือการเปลี่ยนที่ยืดหยุ่นมากขึ้นสำหรับ SysV runlevels ในระบบ init SysV แบบคลาสสิก

"กลุ่มของหน่วย" เหล่านี้ครอบคลุมอาเรย์ของฟังก์ชั่นที่แตกต่างกันbasic.targetซึ่งส่วนใหญ่ครอบคลุมการบูทระบบผ่านไปจนถึงทุก ๆ ช่วงจาก dbus, gettys, จุดเมานท์เพื่อสลับและตัวจับเวลา คุณสามารถดูรายการทั้งหมดด้วยman systemd.specialคุณสามารถดูรายการเต็มรูปแบบกับ

service files เป็นหน่วยพื้นฐานสำหรับกระบวนการทำงานที่ควบคุมโดย systemd อีกครั้งจากman systemd.service :

ไฟล์การกำหนดค่าหน่วยที่ชื่อลงท้ายด้วย. บริการเข้ารหัสข้อมูลเกี่ยวกับกระบวนการที่ควบคุมและดูแลโดย systemd

เหล่านี้ประกอบด้วย daemons ที่สามารถเริ่มต้นหยุดรีสตาร์ทโหลดใหม่

ในที่สุดซ็อกเก็ตจากman systemd.socket:

ไฟล์คอนฟิกูเรชันหน่วยที่ชื่อลงท้ายด้วย ".socket" เข้ารหัสข้อมูลเกี่ยวกับ IPC หรือซ็อกเก็ตเครือข่ายหรือระบบไฟล์ FIFO ควบคุมและดูแลโดย systemd สำหรับการเปิดใช้งานซ็อกเก็ต

เหล่านี้ครอบคลุมซ็อกเก็ตในระบบไฟล์หรือบนอินเทอร์เน็ตเช่นเดียวกับ FIFO แบบคลาสสิกเช่นเดียวกับการขนส่ง แต่ละหน่วยซ็อกเก็ตมีหน่วยบริการที่ตรงกันซึ่งจะเริ่มขึ้นหากมีการเชื่อมต่อครั้งแรกในซ็อกเก็ตหรือ FIFO

นอกจากนี้ในmanหน้ามันเป็นสิ่งที่ควรค่าแก่การอ่านชุดบทความในบล็อกของ Lennart, systemd สำหรับผู้ดูแลระบบซึ่งจะให้ข้อมูลเชิงลึกเกี่ยวกับสถาปัตยกรรมและการใช้งาน systemd (ปัจจุบันมี 20 บทความในซีรีส์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.