Rain WikiWindows · Linux · Android

systemd units และ systemctl

บริการดิสทริบิวชันที่ใช้ systemd

systemd unit คือออบเจกต์การกำหนดค่าที่ systemd ซึ่งเป็นระบบ init ของ Linux ส่วนใหญ่ใช้จัดการ ไม่ว่าจะเป็นบริการ (services), ซ็อกเก็ต (sockets), ตัวตั้งเวลา (timers), การเมานต์ (mounts) และอื่นๆ unit จะถูกอธิบายไว้ในไฟล์ unit เช่น /etc/systemd/system/<name>.service และควบคุมผ่านคำสั่ง systemctl

1ประเภทของ unit

.service ใช้รันโปรแกรม, .socket ใช้เริ่มบริการเมื่อมีการเชื่อมต่อเข้ามา, .timer ใช้รัน unit ตามกำหนดเวลา, .mount และ .automount ใช้จัดการระบบไฟล์, .target ใช้จัดกลุ่ม unit เข้าด้วยกันตามสถานะ เช่น multi-user.target

2ตำแหน่งของไฟล์ unit

แพ็กเกจจะติดตั้ง unit ไว้ใน /usr/lib/systemd/system (หรือ /lib/systemd/system) การเปลี่ยนแปลงในเครื่องควรทำใน /etc/systemd/system ซึ่งจะมีลำดับความสำคัญสูงกว่า คำสั่ง systemctl edit <unit> จะสร้างไฟล์ override แบบ drop-in แทนการแก้ไขไฟล์ที่มากับแพ็กเกจโดยตรง

3คำสั่งที่ใช้บ่อย

systemctl status <unit> ใช้แสดงสถานะและบรรทัดบันทึกเหตุการณ์ล่าสุด 'start', 'stop' และ 'restart' ใช้ดำเนินการทันที 'enable' และ 'disable' ใช้ควบคุมการเริ่มทำงานตอนบูตเครื่อง ส่วน 'enable --now' จะทำทั้งสองอย่าง systemctl --failed ใช้แสดงรายการ unit ที่ทำงานล้มเหลว และ systemctl daemon-reload ใช้สำหรับอ่านไฟล์ unit ใหม่หลังจากมีการแก้ไข

วิธีการตรวจสอบบริการที่ทำงานล้มเหลว

  1. แสดงรายการ unit ที่ล้มเหลว: systemctl --failed
  2. แสดงสถานะและข้อความล่าสุด: systemctl status <unit>
  3. อ่านบันทึกเหตุการณ์ทั้งหมดของการบูตครั้งนี้: journalctl -u <unit> -b
  4. หลังจากแก้ไขการกำหนดค่าแล้ว: sudo systemctl restart <unit>

ข้อควรระวัง

  • ให้แก้ไข unit ที่มากับแพ็กเกจด้วย systemctl edit แทนการแก้ไขไฟล์ใน /usr/lib/systemd/system โดยตรง เนื่องจากไฟล์จะถูกเขียนทับเมื่อมีการอัปเดต
  • ห้ามปิดใช้งาน unit ที่คุณไม่รู้จัก เช่น systemd-journald หรือ dbus

แหล่งอ้างอิง

  1. systemctl(1) man7.org
  2. systemd.unit(5) man7.org
  3. systemd.timer(5) man7.org

ตรวจสอบล่าสุด: