การจัดการบริการระบบด้วย systemd
ควบคุมโปรแกรมที่ทำงานต่อเนื่องซึ่งขับเคลื่อนเซิร์ฟเวอร์ Linux ด้วย systemd ได้แก่ การเริ่ม หยุด เปิดใช้งาน และตรวจสอบบริการ อ่านบันทึกด้วย journalctl และทำความเข้าใจบทบาทของหน่วยต่าง ๆ ในการจัดการกระบวนการ
การจัดการบริการระบบด้วย systemd เป็นบทเรียน Linux Server Deployment & SSH Mastery ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Linux Server Deployment & SSH Mastery และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน
บริการกับกระบวนการทั่วไป
คุณได้จัดการกระบวนการแต่ละรายการและงานตามเวลาแล้ว แต่โปรแกรมที่เป็นหัวใจของเซิร์ฟเวอร์ เช่น เว็บเซิร์ฟเวอร์ ฐานข้อมูล และ SSH ทำงานในรูปแบบบริการ ซึ่งเป็นดีมอนเบื้องหลังที่ควรเริ่มทำงานตอนบูต และเริ่มใหม่เมื่อเกิดข้อผิดพลาด
บน Linux รุ่นใหม่ บริการต่าง ๆ จัดการด้วย systemd ซึ่งเป็นตัวจัดการระบบและบริการ
สิ่งที่ systemd จัดการ
systemd จัดระเบียบทุกอย่างเป็นยูนิต ประเภทที่พบบ่อยที่สุดคือยูนิต .service ซึ่งอธิบายวิธีเรียกใช้ดีมอน
คำสั่ง systemctl เป็นส่วนติดต่อหลักสำหรับตรวจสอบและควบคุมยูนิตเหล่านี้
systemctl --versionตรวจสอบสถานะบริการ
systemctl status แสดงว่าบริการกำลังทำงานอยู่หรือไม่ รหัสกระบวนการหลัก บรรทัดบันทึกล่าสุด และบริการถูกเปิดใช้งานตอนบูตหรือไม่
โดยทั่วไป นี่คือคำสั่งแรกที่คุณใช้เมื่อแก้ไขปัญหาบริการ
systemctl status nginxเริ่มและหยุดบริการ
คุณควบคุมสถานะการทำงานของบริการด้วย start, stop และ restart คำสั่งเหล่านี้มีผลทันที แต่ไม่เปลี่ยนพฤติกรรมตอนบูต
ใช้ reload เมื่อบริการรองรับการอ่านการตั้งค่าใหม่โดยไม่ตัดการเชื่อมต่อ
sudo systemctl start nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl stop nginxเปิดใช้งานบริการตอนบูต
enable ทำให้บริการเริ่มทำงานโดยอัตโนมัติเมื่อเซิร์ฟเวอร์บูต ส่วน disable จะนำบริการออกจากการเริ่มตอนบูต การตั้งค่านี้เป็นอิสระจากการที่บริการกำลังทำงานอยู่ในขณะนี้หรือไม่
ตัวเลือก --now ที่ใช้งานสะดวกจะเปิดใช้งานและเริ่มบริการให้เสร็จในขั้นตอนเดียว
sudo systemctl enable nginx
sudo systemctl enable --now nginx
sudo systemctl disable nginxแสดงรายการบริการ
หากต้องการดูสิ่งที่ติดตั้งและกำลังทำงานอยู่ ให้แสดงรายการไฟล์ยูนิตหรือยูนิตที่ทำงานอยู่
list-units --type=service— บริการที่โหลดอยู่ในขณะนี้list-unit-files --type=service— บริการที่ติดตั้งทั้งหมดและสถานะการเปิดใช้งาน
systemctl list-units --type=service --state=running
systemctl list-unit-files --type=serviceอ่านบันทึกด้วย journalctl
systemd บันทึกผลลัพธ์ของบริการไว้ในสมุดบันทึก สอบถามข้อมูลด้วย journalctl
-u nginx— เฉพาะบริการนี้-f— ติดตามแบบสด-e— ข้ามไปยังท้ายบันทึก
sudo journalctl -u nginx -f
sudo journalctl -u ssh --since '1 hour ago'โครงสร้างของไฟล์ยูนิต
บริการถูกกำหนดด้วยไฟล์ยูนิต ซึ่งมักอยู่ใน /etc/systemd/system/ หรือ /lib/systemd/system/ ไฟล์นี้มีสามส่วนสำคัญ ได้แก่ [Unit], [Service] และ [Install]
บรรทัด ExecStart บอก systemd ว่าต้องเรียกใช้คำสั่งใด
[Unit]
Description=My App
After=network.target
[Service]
ExecStart=/usr/bin/myapp --port 8080
Restart=on-failure
[Install]
WantedBy=multi-user.targetสร้างบริการของคุณเอง
หากต้องการเรียกใช้โปรแกรมของคุณเองเป็นบริการ ให้วางไฟล์ยูนิตไว้ใน /etc/systemd/system/ โหลด systemd ใหม่เพื่อให้เห็นไฟล์ใหม่ จากนั้นเปิดใช้งานและเริ่มบริการ
ต้องใช้ daemon-reload หลังจากแก้ไขไฟล์ยูนิตทุกครั้ง
sudo nano /etc/systemd/system/myapp.service
sudo systemctl daemon-reload
sudo systemctl enable --now myappเริ่มใหม่อัตโนมัติเมื่อเกิดข้อผิดพลาด
หนึ่งในคุณสมบัติที่ดีที่สุดของ systemd คือการกู้คืนโดยอัตโนมัติ คำสั่งกำกับ Restart= บอกให้ระบบเปิดบริการที่หยุดทำงานจากข้อขัดข้องขึ้นมาใหม่
Restart=on-failure— ทำงานใหม่เฉพาะเมื่อจบด้วยค่าที่ไม่ใช่ศูนย์Restart=always— ทำงานใหม่ทุกครั้งที่หยุดRestartSec=5— รอก่อนลองใหม่
[Service]
ExecStart=/usr/bin/myapp
Restart=always
RestartSec=5แนวทางปฏิบัติที่ดี
จัดการบริการอย่างมั่นใจ:
- แยกการทำงานขณะใช้งาน (
start) ออกจากการเริ่มตอนบูต (enable) - เรียกใช้
daemon-reloadหลังแก้ไขไฟล์ยูนิต - ใช้
journalctl -uเพื่อแก้ไขข้อบกพร่อง แทนการค้นจากไฟล์บันทึกที่กระจัดกระจาย - เพิ่ม
Restart=on-failureให้แอปพลิเคชันที่สร้างเองเพื่อให้ทนต่อข้อขัดข้อง
ตรวจสอบอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับ systemd
สรุปทบทวน
ตอนนี้คุณสามารถจัดการบริการของเซิร์ฟเวอร์ด้วย systemd ได้แล้ว:
status,start,stop,restart,reloadenable/disableสำหรับพฤติกรรมตอนบูตjournalctl -uสำหรับบันทึกของบริการ- ไฟล์ยูนิต
.serviceที่สร้างเอง พร้อมRestart=เพื่อเพิ่มความทนทาน
เนื้อหานี้ช่วยเติมเต็มทักษะการจัดการกระบวนการและงานของคุณด้วยดีมอนที่ทำงานต่อเนื่อง
คำถามที่พบบ่อย
บทเรียน “การจัดการบริการระบบด้วย systemd” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การจัดการบริการระบบด้วย systemd” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Linux Server Deployment & SSH Mastery ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Linux Server Deployment & SSH Mastery มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การจัดการบริการระบบด้วย systemd”
ควบคุมโปรแกรมที่ทำงานต่อเนื่องซึ่งขับเคลื่อนเซิร์ฟเวอร์ Linux ด้วย systemd ได้แก่ การเริ่ม หยุด เปิดใช้งาน และตรวจสอบบริการ อ่านบันทึกด้วย journalctl และทำความเข้าใจบทบาทของหน่วยต่าง ๆ ในการจัดการกระ… คุณปฏิบัติ Linux Server Deployment & SSH Mastery ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Linux Server Deployment & SSH Mastery หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Linux Server Deployment & SSH Mastery บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การจัดการบริการระบบด้วย systemd” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Linux Server Deployment & SSH Mastery นี้ได้ไหม
ได้ บทเรียน Linux Server Deployment & SSH Mastery ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การจัดการผู้ใช้และกลุ่ม
- การตรวจสอบกระบวนการของระบบ
- งานตามกำหนดเวลาด้วย Cron
- การจัดการบริการระบบด้วย systemd