ป้ายกำกับ: Service)

ps ตรวจสอบสถานะ Process ใน Linux และ macOSps ตรวจสอบสถานะ Process ใน Linux และ macOS

เคยไหม? คอมพิวเตอร์หรือเซิร์ฟเวอร์อยู่ดีๆ ก็ช้าลง พัดลมหมุนเสียงดัง หรือจู่ ๆ โปรแกรมก็ค้าง สมมติฐานแรกของสาย Dev และ SysAdmin มักจะพุ่งเป้าไปที่“มี Process ไหนกำลังกินทรัพยากรอยู่หรือเปล่า?”และเครื่องมือพื้นฐานที่ทรงพลังที่สุดในการเช็กเรื่องนี้โดยไม่ต้องติดตั้งโปรแกรมเพิ่มก็คือคำสั่ง ps (Process Status)ครับ


💡 ความแตกต่างพื้นฐาน: Linux vs macOS

แม้ว่าทั้ง Linux และ macOS จะเป็นระบบปฏิบัติการตระกูล Unix-like เหมือนกัน และใช้คำสั่ง ps ได้เหมือนกัน แต่เบื้องหลังมีความต่างกันเล็กน้อย

  • Linux (Ubuntu, CentOS, etc.): ส่วนใหญ่ใช้ ps เวอร์ชัน GNU ซึ่งรองรับ Option ทั้งแบบมีขีด (-ef) และแบบไม่มีขีดสไตล์ BSD (aux)
  • macOS: ใช้ ps เวอร์ชัน BSD เป็นหลัก ทำให้อ่าน Option บางตัวของฝั่ง GNU ไม่ได้ แต่ Option มาตรฐานสไตล์ BSD นั้นใช้งานได้ลื่นไหล

ข้อควรระวัง: เวลาเปิดดู Cheat Sheet จากอินเทอร์เน็ต Option บางตัวของ Linux อาจจะเอามาใช้บน Mac แล้วขึ้น Syntax Error ได้ครับ


🚀 4 คำสั่งยอดฮิตที่ต้องจำ (ใช้ได้ทั้ง Linux และ macOS)

หากคุณไม่อยากจำ Option แพลตฟอร์มให้ปวดหัว นี่คือ 4 คำสั่งมาตรฐาน ที่ทำงานได้เหมือนกันทั้งบน Linux และ Mac ครับ

ดู Process ทั้งหมดในระบบ (สไตล์ BSD)

ps aux

  • a = ดู Process ของผู้ใช้ทุกคน
  • u = แสดงรายละเอียดเชิงลึก (เช่น %CPU, %MEM, User)
  • x = รวม Process ที่ไม่ได้รันบน Terminal (เช่น Background Services)

ดู Process ทั้งหมดในระบบ (สไตล์ Standard/Linux)

ps -ef

  • -e = แสดงทุก Process
  • -f = แสดงข้อมูลแบบ Full-format (เห็นสายลำดับ Parent/Child ชัดเจน)

ค้นหา Process ที่ต้องการโดยเฉพาะ (ใช้คู่กับ grep)

ถ้าต้องการหาโปรแกรมเฉพาะเจาะจง เช่น อยากรู้ว่า nginx หรือ node รันอยู่ไหม และได้ PID (Process ID) อะไร ให้ใช้ Pipe (|) คู่กับ grep
ps aux | grep nginx

ดู Process ที่เป็นของตัวเราเอง (Current User)

ps -u $USER


วิธีอ่านผลลัพธ์จากคำสั่ง ps aux

เมื่อกดรัน ps aux สิ่งที่คุณจะเห็นคือตารางขนาดยาว ซึ่งมีหัวข้อหลักๆ ที่ต้องรู้ดังนี้ครับ

หัวข้อ (Column)ความหมาย
USERผู้ที่เป็นเจ้าของ Process นั้น
PIDProcess ID (เลขประจำตัว เอาไว้ใช้สั่ง kill)
%CPUเปอร์เซ็นต์การใช้งาน CPU ในขณะนั้น
%MEMเปอร์เซ็นต์การใช้งาน Memory (RAM) ในขณะนั้น
VSZ / RSSขนาดของ Virtual Memory และ RAM จริงที่ถูกใช้งาน (หน่วยเป็น KB)
TTYหน้าจอ Terminal ที่สั่งรัน (ถ้าขึ้น ? หรือ ?? แปลว่าเป็น Background Service)
STATสถานะของ Process (เช่น R = Running, S = Sleeping, Z = Zombie)
COMMANDคำสั่งหรือพาธของโปรแกรมที่กำลังรันอยู่

🛠️ Advanced Tricks: เทคนิคการใช้งานขั้นสูง

จัดอันดับตัวกินทรัพยากร (Sort)

ถ้าอยากรู้ว่า Process ไหนกำลังแย่ง CPU หรือ RAM มากที่สุด ให้ใช้ Option --sort (บน Linux) หรือสั่ง sort ต่อท้าย (บน Linux/Mac)

  • หาตัวกิน CPU สูงสุด (ใช้ได้ทั้ง Linux/Mac)
    ps aux | sort -nr -k 3 | head -n 10
    (คำสั่งนี้จะดึง 10 อันดับแรกที่กิน CPU สูงสุดออกมาแสดง)
  • หาตัวกิน RAM สูงสุด (ใช้ได้ทั้ง Linux/Mac)
    ps aux | sort -nr -k 4 | head -n 10

สั่งปิดโปรแกรมเจ้าปัญหา (Kill Process)

เมื่อคุณใช้คำสั่ง ps aux | grep โปรแกรม จนเจอเลข PID ของโปรแกรมที่ค้างแล้ว คุณสามารถสั่งปิดมันได้ทันทีด้วยคำสั่ง kill
kill 12345
(เปลี่ยน 12345 เป็นเลข PID จริงของคุณ)
Tip: ถ้ามันค้างหนักมากจนปิดไม่ลง ให้ใช้ไม้ตาย kill -9 12345 เพื่อบังคับปิดทันที (Force Kill)


📝 สรุปสั้นๆ สำหรับผู้เริ่มต้น

  • นึกอะไรไม่ออก ให้พิมพ์ ps aux
  • ถ้าอยากค้นหาโปรแกรม ให้พิมพ์ ps aux | grep ชื่อโปรแกรม
  • ได้เลข PID มาแล้ว โปรแกรมค้าง ให้พิมพ์ kill [เลข PID]

เพียงเท่านี้คุณก็สามารถควบคุมและตรวจสอบพลังงานภายในเครื่อง Linux และ Mac ของคุณได้อย่างมืออาชีพแล้วครับ


อ่านเพิ่มเติม