Rain Wiki · Linux

systemd units และ systemctl

systemd unit คืออะไร ประเภทของ unit ที่พบบ่อย รวมถึงวิธีการเริ่ม หยุด เปิดใช้งาน และตรวจสอบบริการต่างๆ ด้วย systemctl

Linux · Rain Wiki

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

ประเภทของ unit

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

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

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

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

'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

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

อัปเดตล่าสุด: 2026-10-08

บทความที่เกี่ยวข้อง