systemd units และ systemctl
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 ใหม่หลังจากมีการแก้ไข
วิธีการตรวจสอบบริการที่ทำงานล้มเหลว
- แสดงรายการ unit ที่ล้มเหลว:
systemctl --failed - แสดงสถานะและข้อความล่าสุด:
systemctl status <unit> - อ่านบันทึกเหตุการณ์ทั้งหมดของการบูตครั้งนี้:
journalctl -u <unit> -b - หลังจากแก้ไขการกำหนดค่าแล้ว:
sudo systemctl restart <unit>
ข้อควรระวัง
- ให้แก้ไข unit ที่มากับแพ็กเกจด้วย
systemctl editแทนการแก้ไขไฟล์ใน/usr/lib/systemd/systemโดยตรง เนื่องจากไฟล์จะถูกเขียนทับเมื่อมีการอัปเดต - ห้ามปิดใช้งาน unit ที่คุณไม่รู้จัก เช่น systemd-journald หรือ dbus
บทความที่เกี่ยวข้อง
- journalctl และ systemd journalวิธีอ่านบันทึกด้วย journalctl ตรวจสอบพื้นที่ที่ journal ใช้งาน และลดขนาดอย่างปลอดภัยด้วยตัวเลือก --vacuum
- cron และ crontabวิธีที่ cron ใช้รันงานตามกำหนดการ, ฟิลด์เวลาทั้งห้าของ crontab, ตำแหน่งที่เก็บไฟล์ cron ของระบบ และการเปรียบเทียบกับ systemd timers
- logrotateการทำงานของ logrotate วิธีการตั้งค่าใน /etc/logrotate.conf และ /etc/logrotate.d รวมถึงวิธีทดสอบกฎอย่างปลอดภัย
แหล่งอ้างอิง
- systemctl(1) man7.org
- systemd.unit(5) man7.org
- systemd.timer(5) man7.org
ตรวจสอบล่าสุด: