ค้นหาเว็บไซต์

วิธีแสดงรายการบริการที่ทำงานอยู่ทั้งหมดภายใต้ Systemd ใน Linux


ระบบ Linux ให้บริการระบบที่หลากหลาย (เช่น การจัดการกระบวนการ การเข้าสู่ระบบ, syslog, cron ฯลฯ) และบริการเครือข่าย (เช่น การเข้าสู่ระบบระยะไกล อีเมล เครื่องพิมพ์ เว็บโฮสติ้ง การจัดเก็บข้อมูล , การถ่ายโอนไฟล์, การจำแนกชื่อโดเมน (โดยใช้ DNS), การกำหนดที่อยู่ IP แบบไดนามิก (โดยใช้ DHCP) และอื่นๆ อีกมากมาย)

ในทางเทคนิคแล้ว บริการคือกระบวนการหรือกลุ่มของกระบวนการ (โดยทั่วไปเรียกว่า daemons) ที่ทำงานอย่างต่อเนื่องในพื้นหลัง เพื่อรอคำขอเข้ามา (โดยเฉพาะจากไคลเอ็นต์)

Linux สนับสนุนวิธีการจัดการบริการต่างๆ (เริ่ม หยุด รีสตาร์ท เปิดใช้งานการเริ่มอัตโนมัติเมื่อบูตระบบ ฯลฯ) โดยทั่วไปจะผ่านกระบวนการหรือตัวจัดการบริการ ลีนุกซ์สมัยใหม่ส่วนใหญ่หากไม่ใช่ทั้งหมดตอนนี้ใช้ตัวจัดการกระบวนการเดียวกัน: systemd

Systemd คืออะไร?

Systemd คือผู้จัดการระบบและบริการสำหรับ Linux การแทนที่แบบดรอปอินสำหรับกระบวนการ init ซึ่งเข้ากันได้กับสคริปต์เริ่มต้น SysV และ LSB และคำสั่ง systemctl เป็นเครื่องมือหลักในการ จัดการ systemd

เหตุใดจึงแสดงรายการบริการที่รันอยู่ใน Linux

การทราบบริการที่ทำงานอยู่บนระบบ Linux ของคุณมีความสำคัญด้วยเหตุผลหลายประการ ช่วยให้คุณสามารถตรวจสอบการใช้ทรัพยากร แก้ไขปัญหา และจัดการประสิทธิภาพของระบบได้อย่างมีประสิทธิภาพ Systemd ทำให้งานนี้ง่ายขึ้นโดยนำเสนอคำสั่งที่มีประสิทธิภาพเพื่อรวบรวมข้อมูลเกี่ยวกับบริการที่ใช้งานอยู่

ในคู่มือนี้ เราจะสาธิตกระบวนการแสดงรายการบริการที่ทำงานอยู่ทั้งหมดภายใต้ Systemd ใน Linux ซึ่งเป็นคำแนะนำที่ครอบคลุมสำหรับผู้ใช้ทุกระดับประสบการณ์

รายชื่อบริการที่ทำงานภายใต้ SystemD ใน Linux

เมื่อคุณรัน คำสั่ง systemctl โดยไม่มีอาร์กิวเมนต์ใดๆ คำสั่งจะแสดงรายการหน่วย systemd ที่โหลดทั้งหมด (อ่านเอกสารประกอบ systemd สำหรับข้อมูลเพิ่มเติมเกี่ยวกับหน่วย systemd) รวมถึงบริการต่างๆ ที่แสดงสถานะ (ไม่ว่าจะใช้งานอยู่หรือไม่ก็ตาม) ).

systemctl 

แสดงรายการหน่วยทั้งหมดใน systemctl

หากต้องการแสดงรายการบริการที่โหลดทั้งหมดบนระบบของคุณ (ไม่ว่าจะใช้งานอยู่ ทำงาน ออก หรือล้มเหลว ให้ใช้คำสั่งย่อย list-units และสวิตช์ --type พร้อมค่าของบริการ

systemctl list-units --type=service
OR
systemctl --type=service

และหากต้องการแสดงรายการบริการที่โหลดแต่ใช้งานอยู่ทั้งหมด ทั้งที่ทำงานอยู่และที่ออกแล้ว คุณสามารถเพิ่มตัวเลือก --state ด้วยค่า active ได้ดังต่อไปนี้

systemctl list-units --type=service --state=active
OR
systemctl --type=service --state=active

แสดงรายการบริการที่รันอยู่ใน systemctl

แต่หากต้องการดูบริการที่ทำงานอยู่ทั้งหมดอย่างรวดเร็ว (เช่น บริการที่โหลดและใช้งานอยู่ทั้งหมด) ให้รันคำสั่งต่อไปนี้

systemctl list-units --type=service --state=running 
OR
systemctl --type=service --state=running

เรามาสำรวจคำศัพท์สำคัญที่เกี่ยวข้องกับหน่วย Systemd และสถานะกันดีกว่า:

  • หน่วย – หน่วยอาจเป็นบริการ ซ็อกเก็ต อุปกรณ์ หรือเอนทิตีอื่น ๆ
  • โหลด – ระบุว่าเครื่องถูกโหลดหรือไม่ สามารถโหลดยูนิตได้แต่ไม่จำเป็นต้องแอ็คทีฟ
  • ใช้งานอยู่ – แสดงว่าเครื่องกำลังทำงานอยู่หรือประสบปัญหาและอยู่ในสถานะล้มเหลวหรือไม่ใช้งาน
  • SUB – ให้รายละเอียดเพิ่มเติมเกี่ยวกับสถานะเฉพาะของหน่วย สำหรับบริการ อาจระบุว่าบริการกำลังทำงานอยู่ หยุดทำงาน (ออก) หรือประสบปัญหา (ล้มเหลว)
  • คำอธิบาย – ช่วยให้ผู้ใช้ระบุและเข้าใจวัตถุประสงค์ของหน่วยโดยไม่ต้องเจาะลึกไฟล์การกำหนดค่าโดยละเอียด

สร้างนามแฝงสำหรับ systemctl

หากคุณใช้คำสั่งก่อนหน้าบ่อยครั้ง คุณสามารถสร้างคำสั่งนามแฝงในไฟล์ ~/.bashrc ดังที่แสดงไว้ เพื่อให้เรียกใช้งานได้อย่างง่ายดาย

vim ~/.bashrc

จากนั้นเพิ่มบรรทัดต่อไปนี้ใต้รายการนามแฝงตามที่แสดงในภาพหน้าจอ

alias running_services='systemctl list-units  --type=service  --state=running'

บันทึกการเปลี่ยนแปลงในไฟล์และปิด จากนี้ไป ให้ใช้คำสั่ง “running_services ” เพื่อดูรายการบริการที่โหลดและใช้งานอยู่ทั้งหมดบนเซิร์ฟเวอร์ของคุณ

running_services	#use the Tab completion 

ค้นหาพอร์ตที่กระบวนการกำลังรับฟัง

นอกจากนี้ สิ่งสำคัญของการบริการก็คือท่าเรือที่พวกเขาใช้ หากต้องการกำหนดพอร์ตที่กระบวนการ daemon กำลังรับฟังอยู่ คุณสามารถใช้คำสั่ง netstat หรือ ss ดังที่แสดง

โดยที่แฟล็ก -l หมายถึงพิมพ์ซ็อกเก็ตการฟังทั้งหมด -t แสดงการเชื่อมต่อ TCP ทั้งหมด -u แสดงการเชื่อมต่อ UDP ทั้งหมด - n หมายถึง พิมพ์หมายเลขพอร์ตตัวเลข (แทนชื่อแอปพลิเคชัน) และ -p หมายถึง แสดงชื่อแอปพลิเคชัน

netstat -ltup | grep zabbix_agentd
OR
ss -ltup | grep zabbix_agentd

คอลัมน์ที่ห้าแสดงซ็อกเก็ต: Local Address:Port ในกรณีนี้ กระบวนการ zabbix_agentd กำลังรับฟังบนพอร์ต 10050

รายชื่อบริการไฟร์วอลล์ที่ใช้งานอยู่

นอกจากนี้ หากเซิร์ฟเวอร์ของคุณมีบริการไฟร์วอลล์ที่ทำงานอยู่ ซึ่งควบคุมวิธีการบล็อกหรืออนุญาตการรับส่งข้อมูลไปยังหรือจากบริการหรือพอร์ตที่เลือก คุณสามารถแสดงรายการบริการหรือพอร์ตที่เปิดในไฟร์วอลล์ได้โดยใช้ firewall-cmd< หรือคำสั่ง ufw (ขึ้นอยู่กับรุ่น Linux ที่คุณใช้) ดังที่แสดง

firewall-cmd --list-services   [FirewallD]
firewall-cmd --list-ports

sudo ufw status     [UFW Firewall]

นั่นคือทั้งหมดที่สำหรับตอนนี้! ในคู่มือนี้ เราได้สาธิตวิธีดูบริการที่ทำงานภายใต้ systemd ใน Linux นอกจากนี้เรายังกล่าวถึงวิธีการตรวจสอบว่าบริการพอร์ตกำลังรับฟังอยู่ และวิธีการดูบริการหรือพอร์ตที่เปิดในไฟร์วอลล์ของระบบ

คุณมีอะไรเพิ่มเติมที่ต้องทำหรือมีคำถามหรือไม่? ถ้าใช่ ติดต่อเราโดยใช้แบบฟอร์มความคิดเห็นด้านล่าง