0Pricing
Linux Server Deployment & SSH Mastery · บทเรียน

การจัดการบริการระบบด้วย 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, reload
  • enable/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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การจัดการผู้ใช้และกลุ่ม
  2. การตรวจสอบกระบวนการของระบบ
  3. งานตามกำหนดเวลาด้วย Cron
  4. การจัดการบริการระบบด้วย systemd
← กลับไปที่ Linux Server Deployment & SSH Mastery