ลด 50% ทุกแพลน เวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลือ 10 นาที
Server และ OS

เชี่ยวชาญการจัดการ Process กับคำสั่ง Linux ps aux

Ada Lovegood By Ada Lovegood อ่าน 10 นาที อัปเดต: 11 กรกฎาคม 2024
linux ps aux คำสั่ง

คุณเปิด tab อื่นในเบราว์เซอร์ไว้อีกอย่างน้อยห้า tab เพื่อหาคำตอบสำหรับปัญหา Linux ที่กำลังเจออยู่ใช่ไหม?
พฤติกรรมแบบนี้ไม่ได้เกิดขึ้นเฉพาะกับคุณหรือมนุษย์เท่านั้น เครื่องจักรก็ทำงานหลายอย่างพร้อมกันได้เช่นกัน และเช่นเดียวกับคุณ Linux ก็เป็น multitasker ที่มีหลายโปรเซสทำงานพร้อมกันในเวลาเดียวกัน ไม่ว่าคุณจะเป็นนักพัฒนาที่ใช้ Linux ในการทำงาน หรือผู้ใช้ทั่วไปที่ใช้ Linux ในชีวิตประจำวัน การเข้าใจโปรเซสที่ทำงานขนานกันเหล่านี้จะช่วยให้คุณควบคุมระบบได้อย่างเต็มที่ การจัดการโปรเซสและการควบคุมระบบเป็นสิ่งสำคัญในการใช้งาน Linux

หากต้องการจัดการโปรเซสที่รันอยู่บนระบบได้อย่างมีประสิทธิภาพ ติดตามสิ่งที่เกิดขึ้นแบบ real-time มองภาพรวมของโปรเซสเบื้องหลังทั้งหมด และควบคุมทรัพยากรของระบบ คุณจำเป็นต้องมีความเข้าใจด้านการจัดการโปรเซส คำสั่ง ps aux เป็นคำสั่งที่มีบทบาทสำคัญในการจัดการโปรเซสและการควบคุมระบบ ในบทความนี้เราจะเรียนรู้เกี่ยวกับคำสั่ง ps aux และการใช้งานในรูปแบบต่างๆ พร้อมทั้งทำความเข้าใจพื้นฐานการทำงานของโปรเซสใน Linux

ทำความเข้าใจการจัดการโปรเซสใน Linux

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

โปรเซสใน Linux มีสองประเภท ได้แก่:

  • กระบวนการในพื้นหน้า
  • กระบวนการพื้นหลัง

Foreground Processes ใน Linux

Foreground process คือโปรเซสที่กำลังทำงานและโดยทั่วไปต้องการการโต้ตอบกับผู้ใช้อย่างต่อเนื่องแบบ real-time เมื่อ foreground process กำลังทำงาน โปรเซสอื่นจะถูกหยุดชั่วคราว ทำให้ไม่สามารถรันคำสั่งอื่นได้ Foreground process รับข้อมูลจากคีย์บอร์ดในรูปแบบ standard input หรือ stdin เพื่อไม่ให้เกิดความสับสน stdin และ stdout คือ data streams ของ Linux ที่มีพร้อมกับ stderr ซึ่งเป็นช่องทางที่ผู้ใช้โต้ตอบและส่งข้อมูลให้กับโปรเซส ส่วน standard output หรือ stdout คือผลลัพธ์ที่โปรเซสสร้างขึ้นตามฟังก์ชันการทำงานและข้อมูลที่ได้รับ Foreground process คือโหมดการทำงานเริ่มต้นของ Linux

Background Processes ใน Linux

Background process คือโปรเซสที่ตรงข้ามกับ foreground process โดยสิ้นเชิง เนื่องจากไม่ต้องการการโต้ตอบจากผู้ใช้และไม่ครอบครอง terminal ทั้งหมด ทำให้สามารถรันโปรเซสอื่นได้พร้อมกัน รูปแบบ input และ output ของ background process ก็แตกต่างออกไปด้วย โดยทั่วไปจะไม่รับ stdin แต่ผลลัพธ์ของโปรเซสสามารถแสดงเป็น stdout ได้ การแสดงผลของ background process เกิดขึ้นพร้อมกันกับ output ของ foreground process อื่น ทำให้คุณเห็นความคืบหน้าหรือผลลัพธ์ของ background process ได้โดยไม่ขัดขวางการทำงานอื่นที่สำคัญ

เนื่องจากการทำงานหลายอย่างใน Linux ขึ้นอยู่กับ command line foreground process อาจเป็นอุปสรรค ในขณะที่การรันโปรเซสเบื้องหลังจะทำให้ terminal ของคุณว่างสำหรับงานอื่น ดังนั้นการย้าย foreground task ไปทำงานเบื้องหลังจึงเป็นทางเลือกที่สมเหตุสมผล หากต้องการ ส่งโปรเซสไปทำงานเบื้องหลัง คุณต้องหยุดการทำงานใน foreground ก่อน โดยกด CTRL+Z จากนั้นพิมพ์คำสั่ง bg เพื่อให้โปรเซสที่หยุดไว้รันต่อในเบื้องหลัง และหากต้องการนำกลับมาทำงานใน foreground ให้ใช้คำสั่ง fg

Process Status: Syntax, คำสั่ง และการตีความผลลัพธ์

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

สถานะการประมวลผล คำอธิบาย
กำลังทำงาน(R) process กำลังทำงานอยู่และใช้ทรัพยากร CPU
นอนหลับ ขัดจังหวะได้ (S) กระบวนการกำลังรอ input หรือเหตุการณ์ที่กำหนดไว้เพื่อกลับมาทำงานต่อ ขณะนี้ไม่ได้ใช้ทรัพยากร CPU เมื่อทรัพยากรพร้อมใช้งาน หรือได้รับ signal กระบวนการจะเริ่มทำงานอีกครั้ง
ไม่สามารถขัดจังหวะได้ (D) เช่นเดียวกับกระบวนการที่อยู่ในสถานะ interruptible sleep กระบวนการที่อยู่ในสถานะ uninterruptible sleep จะไม่ใช้ทรัพยากร CPU ข้อแตกต่างเพียงอย่างเดียวคือ กระบวนการนี้ไม่ตอบสนองต่อ signal ใดๆ และจะกลับมาทำงานได้ก็ต่อเมื่อทรัพยากรพร้อมใช้งานเท่านั้น
หยุด(T) กระบวนการถูกหยุดชั่วคราวจาก input ของผู้ใช้หรือเหตุการณ์เฉพาะ กระบวนการที่อยู่ในสถานะ stopped จะไม่ใช้ทรัพยากร CPU ใดๆ
ตายแล้ว(X) กระบวนการสิ้นสุดลงแล้วและไม่มีอยู่ในระบบอีกต่อไป

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

ไวยากรณ์และคำสั่งสำหรับตรวจสอบสถานะกระบวนการ

คุณสามารถตรวจสอบสถานะกระบวนการใน Linux ได้ด้วยไวยากรณ์พื้นฐานของคำสั่ง ps ดังนี้:

ps [process name]

นอกจากนี้ยังมี option อื่นๆ ที่ใช้ร่วมกับคำสั่ง ps ได้อีก:

aux: option นี้แสดงรายการกระบวนการทั้งหมดที่ทำงานอยู่บนระบบอย่างครบถ้วน โดยให้ข้อมูลต่างๆ เช่น process ID (PID), parent process ID (PPID), การใช้งาน CPU และ memory รวมถึงสถานะของกระบวนการ ผลลัพธ์จากคำสั่ง ps aux นั้นเป็นระเบียบกว่า อ่านง่ายกว่า และมีข้อมูลที่เป็นประโยชน์มากกว่าคำสั่ง ps พื้นฐานมาก

ef: option นี้แสดงรายการกระบวนการแบบ full-format พร้อมรายละเอียดเพิ่มเติม รวมถึงโครงสร้างลำดับชั้นของกระบวนการในรูปแบบ tree

l: option นี้แสดงรายการในรูปแบบ long listing เพื่อให้ข้อมูลเกี่ยวกับกระบวนการอย่างละเอียดยิ่งขึ้น

การอ่านผลลัพธ์

เมื่อรันคำสั่ง ps พร้อม option ที่ต้องการ ระบบจะแสดงผลลัพธ์ที่แทนกระบวนการทั้งหมดที่กำลังทำงานอยู่บนเครื่องของคุณ ผลลัพธ์ประกอบด้วยคอลัมน์ต่างๆ ที่แสดงคุณลักษณะของกระบวนการ ได้แก่ process ID (PID), parent process ID (PPID), การใช้งาน CPU, การใช้งาน memory, สถานะของกระบวนการ, ประเภทของ terminal และชื่อคำสั่ง

คำอธิบายของแต่ละคอลัมน์มีดังนี้:

PID: คอลัมน์นี้แสดง ID เฉพาะของกระบวนการ

TTY: คอลัมน์นี้แสดงประเภทของ terminal ที่ผู้ใช้ล็อกอินอยู่

เวลา: คอลัมน์นี้บ่งบอกถึงปริมาณการใช้งาน CPU ของกระบวนการนี้ในหน่วยนาทีและวินาที

CMD: คอลัมน์นี้แสดงชื่อคำสั่งที่เป็นต้นเหตุให้เกิดกระบวนการนี้

การวิเคราะห์ข้อมูลจากคำสั่ง ps จะช่วยให้คุณเข้าใจพฤติกรรมของเครื่อง Linux ของคุณได้ลึกซึ้งยิ่งขึ้น

เทคนิค ps ขั้นสูงสำหรับ Process Management ด้วยคำสั่ง ps

มาดูฟีเจอร์ขั้นสูงของคำสั่ง ps และวิธีใช้งานให้เกิดประโยชน์สูงสุด:

1. การเรียงลำดับกระบวนการ

คำสั่ง ps aux สามารถเรียงลำดับผลลัพธ์ตามคอลัมน์ต่างๆ ได้ ตัวอย่างเช่น คุณสามารถเรียงกระบวนการตาม process ID หรือการใช้งาน CPU เพื่อดูในลำดับที่ต้องการได้

ตัวอย่างการเรียงลำดับกระบวนการตาม process ID โดยใช้ ps aux มีดังนี้:

ps aux –-sort pid

คำสั่ง head ใช้เพื่อแสดงเฉพาะห้าแถวแรกของผลลัพธ์

ps aux เรียงลำดับ pid

2. การแสดงผลโครงสร้าง Process Tree

หากต้องการดูความสัมพันธ์แบบ parent-child ของกระบวนการได้อย่างชัดเจน ให้ใช้คำสั่ง ps พร้อมกับ option forest

ps -aux --forest

ความสัมพันธ์แบบ parent-child ของกระบวนการ Linux

หากต้องการดูความสัมพันธ์ระหว่างกระบวนการในรูปแบบโครงสร้างต้นไม้ สามารถใช้คำสั่ง pstree ได้เช่นกัน คำสั่งนี้จะแสดงผลลัพธ์ที่อ่านง่ายกว่าและสื่อถึงลำดับชั้นระหว่างกระบวนการได้อย่างชัดเจน โดยพิมพ์คำสั่งดังนี้:

pstree [pid or username]

การระบุ PID ให้กับคำสั่งนี้ หมายถึงการกำหนดให้กระบวนการนั้นเป็น root ของต้นไม้

3. กระบวนการกรองข้อมูล

สมมติว่าต้องการทำงานกับกระบวนการเฉพาะกลุ่ม เช่น ต้องการแสดงรายการกระบวนการทั้งหมดของผู้ใช้คนใดคนหนึ่ง การกรองกระบวนการตามเงื่อนไขสามารถทำได้โดยใช้คำสั่ง ps ในตัวอย่างนี้ เราจะกรองกระบวนการตาม username

ps -u [username]

การกรองกระบวนการ Linux ด้วยคำสั่ง ps

คำสั่ง ps aux grep สามารถกรองกระบวนการตาม pattern หรือ keyword ใดก็ได้ที่ระบุให้กับคำสั่ง ดูตัวอย่างจาก code ด้านล่าง:

ตัวอย่างคำสั่ง ps aux grep

คำสั่งนี้จะแสดงรายการกระบวนการทั้งหมดก่อน แล้วส่งผลลัพธ์ให้คำสั่ง grep กรองรายการที่ยาวนั้นตาม process ID ในภาพด้านบน จะเห็นรายการกระบวนการทั้งหมดที่มีตัวเลข 15 ปรากฏอยู่ในข้อมูล

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง ps และความสามารถของมัน สามารถอ่าน manual page ของคำสั่งนี้ได้ โดยใช้ code ด้านล่างเพื่อแสดง manual page:

man ps

การจัดการลำดับความสำคัญของ Task ใน Linux

เพื่อให้เข้าใจการจัดการกระบวนการใน Linux ได้ชัดเจนยิ่งขึ้น เราควรพูดถึง process priority และวิธีเปลี่ยนค่าด้วย ลองนึกถึงสถานการณ์ที่รันหลายกระบวนการพร้อมกัน และ CPU รับภาระงานหนักเกินไป หากต้องการจัดสรรทรัพยากรให้ทำงานได้อย่างถูกต้องในสถานการณ์นั้น จำเป็นต้องปรับลำดับความสำคัญของงานที่กำลังทำงานอยู่ กระบวนการแต่ละรายการใน Linux มีค่า priority กำกับอยู่ ค่านี้ช่วยให้ kernel จัดลำดับงานได้ถูกต้อง ค่า priority อยู่ในช่วง -20 ถึง 19 โดย 19 หมายถึงงานที่มีความสำคัญน้อยที่สุด และ -20 หมายถึงงานที่เร่งด่วนที่สุด กระบวนการที่มี priority สูงสุดจะได้รับเวลา CPU มากกว่ากระบวนการอื่น ค่า priority มักเรียกว่าค่า "nice" โดยค่า nice ที่ต่ำกว่าหมายถึง priority ที่สูงกว่า

สามารถใช้คำสั่ง nice และ renice เพื่อจัดสรรทรัพยากรของระบบได้อย่างมีประสิทธิภาพ

แต่ก่อนจะเปลี่ยน priority ของกระบวนการ มาดู use case แรกของคำสั่ง ps กันก่อน

  • การแสดง priority ปัจจุบันของกระบวนการทั้งหมดด้วยคำสั่ง ps:

คำสั่งนี้จะแสดงรายการกระบวนการทั้งหมดพร้อม process ID (PID), ชื่อคำสั่ง และค่า priority ปัจจุบัน (nice value):

 

ps -eo pid,cmd,nice

การดึงค่า priority ของกระบวนการทั้งหมดด้วยคำสั่ง ps

  • การเริ่มกระบวนการด้วย priority สูงเป็นค่าเริ่มต้นโดยใช้คำสั่ง nice:

สามารถเริ่มกระบวนการด้วย priority ที่ต้องการได้โดยใช้คำสั่งนี้:

nice -n [priority] [command]

แทนที่ [priority] ด้วยค่าติดลบที่ต้องการซึ่งแทน priority level และแทนที่ [command] ด้วยคำสั่งที่ต้องการรัน

ตัวอย่างเช่น:

การเริ่มกระบวนการด้วย priority สูงเป็นค่าเริ่มต้น

  • การเปลี่ยนลำดับความสำคัญของคำสั่งที่กำลังรันอยู่:
renice -n [priority] -p [PID]

แทนที่ Process ID ของโปรเซสที่ต้องการจัดการด้วย [PID]

หากต้องการเครื่อง Linux ที่มีประสิทธิภาพสูงสำหรับงานหลากหลายประเภท Linux VPS คือตัวเลือกที่เหมาะสมที่สุดสำหรับคุณ Cloudzy มีแผนบริการ Linux VPS หลายรูปแบบพร้อมติดตั้ง distro ที่คุณต้องการไว้ล่วงหน้า ด้วยจุดเด่นอย่างการสนับสนุน 24/7 นโยบายคืนเงินภายใน 30 วัน และการรับประกัน uptime 99.95% Cloudzy จึงสามารถรักษาราคาให้อยู่ในระดับที่เข้าถึงได้ แผน Linux VPS ของเราเริ่มต้นเพียง $4.95/เดือน

Linux VPS Hosting

รับ Linux VPS แบบ economy หรือ premium สำหรับ host เว็บไซต์หรือ remote desktop ในราคาที่ถูกที่สุด VPS รันบน Linux KVM เพื่อประสิทธิภาพที่เพิ่มขึ้นและทำงานบนฮาร์ดแวร์ที่ทรงพลังพร้อม NVMe SSD storage เพื่อความเร็วที่เพิ่มขึ้น

อ่านต่อ

สรุป

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

คำถามที่พบบ่อย

คำสั่ง ps aux ใน Linux คืออะไร?

คำสั่ง ps aux ใน Linux เป็นคำสั่งที่ใช้กันอย่างแพร่หลายสำหรับดูข้อมูลโปรเซสที่กำลังทำงานอยู่ คำสั่งนี้แสดงรายการโปรเซสทั้งหมดในรูปแบบที่อ่านง่าย ครอบคลุมทั้ง Process ID (PID) การใช้งาน CPU และ memory สถานะการทำงาน และรายละเอียดสำคัญอื่น ๆ

โปรเซสใน Linux มีกี่ประเภท?

มี 2 ประเภท ได้แก่ Foreground process และ Background process โดย Foreground process จะครอบครอง terminal ระหว่างทำงานและไม่อนุญาตให้รันคำสั่งอื่นพร้อมกัน ส่วน Background process ทำงานอยู่เบื้องหลังโดยไม่ยึด terminal ไว้

จะดูรายการ processes ที่ทำงานบนระบบ Linux ได้อย่างไร

คุณสามารถดูรายการโปรเซสที่กำลังทำงานบนระบบ Linux ได้ด้วยคำสั่งอย่าง ps, top หรือ htop ตัวอย่างเช่น คำสั่ง ps aux ของ Linux จะแสดงข้อมูลโดยละเอียดของโปรเซสทั้งหมดที่กำลังรันอยู่

แชร์

บทความเพิ่มเติมจากบล็อก

อ่านต่อ

ภาพปก Best Self-Hosted Apps You Can Run with Cosmos Cloud พร้อมแผงแอปรอบ dashboard ของ Cosmos
Server และ OS

แอป Self-Hosted ที่ดีที่สุดที่คุณรันได้บน Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ!

บางทีคุณอาจตั้งค่า Cosmos Cloud ไว้แล้วและตอนนี้อยากเห็นว่าแอปไหนเข้ากันได้ดี หรืออาจยังไม่ตัดสินใจเลือก Cosmos และเพียงต้องการดูว่าเหมาะกับ workflow ของคุณแค่ไหน

Nick SilverNick Silver อ่าน 16 นาที
ภาพปก Portainer vs Cosmos Cloud for Managing Docker Apps พร้อมแผนภาพการตั้งค่าแบบ hybrid และบล็อก ops vs access สีนีออน
Server และ OS

Portainer กับ Cosmos Cloud: ตัวไหนเหมาะที่สุดสำหรับจัดการแอป Docker

หากคุณรู้จัก Docker อยู่แล้วและเพียงต้องการวิธีที่สะอาดกว่าในการรัน app stack ที่เติบโตขึ้น คำตอบสั้นๆ ของ Portainer vs Cosmos Cloud คือ Portainer เป็นตัวเลือกที่แข็งแกร่งกว่าสำหรับการจัดการโดยตรง

Nick SilverNick Silver อ่าน 14 นาที
กราฟิก feature ของ Cosmos Cloud vs CasaOS vs Umbrel แสดงเส้นทาง self-hosted สามแบบในโลกเครือข่ายคลาวด์นามธรรม
Server และ OS

Cosmos Cloud vs CasaOS vs Umbrel: แพลตฟอร์ม Self-Hosted ตัวไหนเหมาะกับการตั้งค่าของคุณ?

คำตอบสั้นๆ คือ CasaOS ยังคงเป็นที่ที่เริ่มต้นได้ง่ายที่สุด Umbrel มีความรู้สึกที่ผ่านการคัดสรรสะอาดที่สุด และ Cosmos Cloud มีเหตุผลมากขึ้นเมื่อคุณต้องการการควบคุมที่แน่นกว่า

Nick SilverNick Silver อ่าน 11 นาที

พร้อมติดตั้งหรือยัง? เริ่มต้น $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน