# systemd units และ systemctl

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

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

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

- [systemctl(1)](https://man7.org/linux/man-pages/man1/systemctl.1.html)
- [systemd.unit(5)](https://man7.org/linux/man-pages/man5/systemd.unit.5.html)
- [systemd.timer(5)](https://man7.org/linux/man-pages/man5/systemd.timer.5.html)

อัปเดตล่าสุด: 2026-10-08
URL: https://raincleaner.eu/th/wiki/linux/systemd-units
