ดังที่คนอื่น ๆ ได้ตั้งข้อสังเกตไว้แล้วในทางทฤษฎีสิ่งนี้ไม่ควรส่งผลกระทบต่อผู้ใช้ที่ไม่ใช่ด้านเทคนิคและในทางทฤษฎีไม่มีความแตกต่างระหว่างทฤษฎีและการปฏิบัติ แต่ในทางปฏิบัติมี
การอธิบาย
ฉันคิดว่าบางสิ่งที่โพสต์ที่นี่ต้องมีการชี้แจง:
เป็นระบบเริ่มต้นไม่ใช่สิ่งที่ผู้ใช้โต้ตอบกับแบบดั้งเดิม
มันเป็นกรณีที่มี SysV init และมี Upstart แต่มันไม่เป็นเช่นนั้นกับ systemd อีกต่อไป มันไม่มากของสิ่งที่ผู้ใช้โต้ตอบกับประเพณี:
มันควรแทนที่ฟังก์ชั่นที่มีให้โดยพุ่งพรวดอย่างสมบูรณ์และทำสิ่งเพิ่มเติมเล็กน้อย
สองสิ่งที่ต้องชี้แจง - สิ่งแรกที่เกี่ยวกับการแทนที่พุ่งพรวดอย่างสมบูรณ์:
ไม่มีสคริปต์เริ่มต้น SysV
หนึ่งในปัญหาที่ผู้คนมีกับ systemd คือมันไม่ได้เรียกใช้สคริปต์ init SysV ดังนั้นจึงมีตัวอย่างหนึ่งที่ไม่สามารถแทนที่ฟังก์ชั่นการใช้งานของ Upstart ได้อย่างสมบูรณ์
นี่คือสิ่งที่เราสามารถไว้วางใจได้นานกว่า 30 ปีและโดยทั่วไปคุณเขียนสคริปต์ init SysV เพื่อการพกพาสูงสุดโดยไม่ต้องทำซ้ำ (โดยการเขียนสคริปต์เดียวกันหลายเวอร์ชัน) ซึ่งไม่ใช่กรณีนี้อีกต่อไป
นี่ไม่ควรเป็นปัญหาเมื่อใช้เฉพาะแพ็คเกจจากที่เก็บอย่างเป็นทางการเนื่องจากแพ็คเกจทั้งหมดที่เคยมีสคริปต์ SysV init หรือ Upstart อาจจำเป็นต้องเขียนสคริปต์ใหม่ก่อนที่จะได้รับการบรรจุ
มันจะเป็นปัญหาสำหรับคนที่ใช้ซอฟต์แวร์ของบุคคลที่สามหรือที่กำหนดเองที่มีสคริปต์เริ่มต้นของพวกเขาสำหรับ SysV init หรือสำหรับการพุ่งพรวดและผู้ที่จะต้องเขียนสคริปต์ init ใหม่ก่อนที่จะอัพเกรดเป็นระบบที่มี systemd (หรือ พุ่งพรวดติดตั้งซึ่งเป็นตัวเลือกหรือโยกย้ายไปยังระบบที่ไม่ได้ใช้ systemd)
มี systemd-sysv-generator ที่ควรแปลสคริปต์ init SysV โดยอัตโนมัติไปยังสคริปต์ systemd แต่มีข้อบกพร่องบางอย่างและรายการความเข้ากันไม่ได้ที่ชัดเจนกันไม่ได้อย่างชัดเจน
ตอนนี้การชี้แจงที่สอง - เกี่ยวกับสิ่งพิเศษเหล่านี้:
บางสิ่งที่พิเศษ
"สิ่งพิเศษสองสามอย่าง" ที่ systemd กำลังครอบคลุม - ตามมุมมองของ systemd - สิ่งที่ได้รับมาแล้วและสิ่งที่นำเสนอโดยLennart Poetteringในปี 2014 ที่ GNOME.asia - มีดังต่อไปนี้:
- ระบบ init
- การบันทึกวารสาร
- การจัดการเข้าสู่ระบบ
- การจัดการอุปกรณ์
- การจัดการไฟล์ชั่วคราวและระเหย
- การลงทะเบียนรูปแบบไบนารี
- บันทึก / เรียกคืนแสงไฟ
- rfkill บันทึก / เรียกคืน
- bootchart
- readahead
- การตั้งค่าที่เก็บข้อมูลที่เข้ารหัส
- การค้นหาพาร์ติชัน EFI / GPT
- การลงทะเบียนเครื่อง / คอนเทนเนอร์เสมือน
- การจัดการตู้คอนเทนเนอร์
- การจัดการชื่อโฮสต์
- การจัดการโลแคล
- การจัดการเวลา
- การจัดการเมล็ดแบบสุ่ม
- การจัดการตัวแปร sysctl
- การจัดการคอนโซล
- วิปัสสนา
- การค้นพบอัตโนมัติ
- plug and play
- การจัดการเครือข่าย
- systemd-networkd
- แคช DNS
- การตอบกลับ mDNS
- LLMNR ตอบกลับ
- การตรวจสอบ DNSSEC
- IPC ในเคอร์เนล
- kdbus
- SD-รถบัส
- การประสานเวลากับ NTP
- systemd-timesyncd
- บูรณาการกับภาชนะบรรจุ
- sandboxing ของบริการ
- แอปแซนด์บ็อกซ์
- รูปแบบภาพ OS
- รูปแบบภาพคอนเทนเนอร์
- รูปแบบภาพแอป
- GPT พร้อมการค้นพบอัตโนมัติ
- ระบบไร้สัญชาติ
- ระบบทันใจ
- รีเซ็ตเป็นค่าจากโรงงาน
- โหนดการเริ่มต้นและการอัพเดต
- บูรณาการกับระบบคลาวด์
- การจัดการบริการข้ามโหนด
- ภาพ OS ที่ตรวจสอบได้ตลอดทางจนถึงเฟิร์มแวร์
- กำลังโหลด Boot
- การสร้างระบบปฏิบัติการรุ่นต่อไปของอินเทอร์เน็ตการรวมความแตกต่างอย่างไม่มีจุดหมายระหว่างการกระจาย
ดังนั้นกลับไปที่: "มันเป็นระบบเริ่มต้นไม่ใช่สิ่งที่ผู้ใช้โต้ตอบกับดั้งเดิม" - จะต้องมีการชี้ให้เห็นว่าระบบ init เป็นเพียงรายการเดียวในรายการนั้น
และในที่สุดสิ่งสุดท้ายที่ฉันต้องการที่จะแสดงความคิดเห็น:
[T] เขาเพียงครั้งเดียวที่ผู้ใช้ที่ไม่ใช่ด้านเทคนิคจะเห็นสิ่งนี้คือเมื่อเกิดข้อผิดพลาด
โอ้สบายดีไหม :)
การเปลี่ยนแปลง
การเปลี่ยนแปลงที่โดดเด่นที่สุดสำหรับผู้ใช้ปลายทาง (นอกเหนือจากสคริปต์) กำลังเริ่มต้นและหยุดบริการและใช้คำสั่งเช่น:
ซึ่งไม่ทำงานตามที่คาดไว้ ตัวอย่างเช่นnohup
เป็นคำสั่ง POSIX เพื่อให้แน่ใจว่ากระบวนการทำงานต่อไปหลังจากที่คุณออกจากระบบ มันไม่ทำงานบน systemd อีกต่อไป นอกจากนี้โปรแกรมที่ต้องการscreen
และtmux
จำเป็นต้องเรียกใช้ในวิธีพิเศษไม่เช่นนั้นกระบวนการที่คุณใช้กับโปรแกรมจะถูกฆ่า (ในขณะที่ไม่ได้รับกระบวนการที่ถูกฆ่ามักเป็นสาเหตุหลักของการเรียกใช้หน้าจอหรือ tmux ในตอนแรก)
นี่ไม่ใช่ข้อผิดพลาดเป็นตัวเลือกการออกแบบดังนั้นจึงไม่น่าที่จะได้รับการแก้ไขในอนาคต นี่คือสิ่งที่ Lennart Poettering พูดเกี่ยวกับปัญหานี้:
ในมุมมองของฉันมันค่อนข้างแปลกที่ UNIX นั้นโดยค่าเริ่มต้นปล่อยให้รหัสผู้ใช้เองตามอำเภอใจไม่ จำกัด หลังจากออกจากระบบ ได้มีการพูดคุยกันมานานแล้วในหมู่คน OS หลาย ๆ คนซึ่งสิ่งนี้ควรเป็นไปได้ แต่ไม่แน่นอนว่าเป็นค่าเริ่มต้น การไม่ทำความสะอาดเซสชันผู้ใช้หลังจากออกจากระบบไม่เพียง แต่น่าเกลียดและค่อนข้างแฮ็ก แต่ยังเป็นปัญหาด้านความปลอดภัย ในที่สุด systemd 230 ก็พลิกสวิตช์และในที่สุดก็ทำความสะอาดทุกอย่างได้อย่างถูกต้องเมื่อผู้ใช้ออกจากระบบ
สำหรับข้อมูลเพิ่มเติมดู:
วิ่ง screen
- พุ่งพรวด:
screen
- systemd:
systemd-run --user --scope screen
(หมายเหตุ: พฤติกรรมของ "พุ่งพรวด" ด้านบนเป็นอะไรจริงๆยกเว้น systemd นี่ไม่ใช่การพุ่งพรวดที่เฉพาะเจาะจง)
การเริ่มงาน foo:
- พุ่งพรวด:
start foo
- systemd:
systemctl start foo
การหยุดงาน foo:
- พุ่งพรวด:
stop foo
- systemd:
systemctl stop foo
การเริ่มงานใหม่ foo:
- พุ่งพรวด:
restart foo
- systemd:
systemctl restart foo
รายการงานที่มีสถานะของพวกเขา:
- พุ่งพรวด:
initctl list
- systemd:
systemctl status
(ดูคำตอบของฉันไปที่ข้อดี / ข้อเสียของการพุ่งพรวดและ systemd คืออะไร?สำหรับรายละเอียดเพิ่มเติมที่อยู่นอกขอบเขตสำหรับคำถามนี้)
ท่อน
นอกจากนี้ยังมีความแตกต่างใหญ่ในการจัดการบันทึกเพราะตรงกันข้ามกับ Unix ประเพณีบันทึกของ systemd จะถูกเก็บไว้ในไฟล์ไบนารีในรูปแบบที่กำหนดเองดังนั้นแทนที่จะ:
cat /var/log/upstart/foo.log
tail -f /var/log/upstart/foo.log
คุณต้องใช้คำสั่งพิเศษเพื่อเข้าถึงบันทึกของคุณ:
sudo journalctl -u foo
sudo journalctl -u foo -f
ถกเถียงกันอย่างเผ็ดร้อน
การแนะนำของ systemd ก่อน Debian และ Ubuntu ภายหลังไม่ได้โดยไม่มีข้อโต้แย้งและฝ่ายค้านมากมายเป็นที่รู้จักกันทุกคนที่เขียนหนึ่งในบทความต่อไปนี้:
ตำแหน่งอย่างเป็นทางการใน Debian systemdและเกิดการทะเลาะวิวาทได้นำไปสู่การประกาศอพยพในปี 2014และจบลงด้วยเอียนแจ็คสันลาออก
Init เสรีภาพ , Without-Systemd.orgและ Systemd-Free.orgความคิดริเริ่มเกิดที่มีจำนวนมากของการอภิปรายเกี่ยวกับข่าว Hacker
อ่านเพิ่มเติม