คุณมีแท็บอื่นอย่างน้อยห้าแท็บที่เปิดอยู่บนเบราว์เซอร์ของคุณ และพยายามค้นหาคำตอบสำหรับปัญหา Linux ที่คุณพบอยู่หรือไม่?
พฤติกรรมนี้ไม่ได้เฉพาะเจาะจงสำหรับคุณหรือมนุษย์โดยทั่วไป เครื่องจักรทำงานหลายอย่างพร้อมกันได้เช่นกัน เช่นเดียวกับคุณ Linux ก็เป็น multitasker และมีกระบวนการหลายอย่างเกิดขึ้นในเวลาเดียวกัน ไม่ว่าคุณจะเป็นนักพัฒนาที่ใช้ Linux อย่างมืออาชีพ หรือเป็นผู้ใช้ทั่วไปที่ทำงานกับ Linux สำหรับกิจกรรมในแต่ละวัน คุณควรจะสามารถเข้าใจกระบวนการคู่ขนานเหล่านี้เพื่อรักษาการควบคุมระบบของคุณได้อย่างเต็มที่ การจัดการกระบวนการและการควบคุมระบบเป็นส่วนสำคัญในการรันระบบ Linux
เพื่อจัดการกระบวนการที่ทำงานบนระบบอย่างมีประสิทธิภาพ ดูสิ่งที่เกิดขึ้นแบบเรียลไทม์ มีแนวคิดทั่วไปเกี่ยวกับกระบวนการเบื้องหลังทั้งหมด และควบคุมทรัพยากรของระบบ คุณต้องมีความรู้ทางเทคนิคเกี่ยวกับการจัดการกระบวนการ คำสั่ง ps aux เป็นคำสั่งที่มีประสิทธิภาพซึ่งมีบทบาทสำคัญในการจัดการกระบวนการและการควบคุมระบบ ในโพสต์นี้ เราจะเรียนรู้เพิ่มเติมเกี่ยวกับคำสั่ง ps aux และกรณีการใช้งาน นอกจากนี้เรายังจะครอบคลุมถึงพื้นฐานของวิธีการทำงานของกระบวนการ Linux
ทำความเข้าใจการจัดการกระบวนการใน Linux
เมื่อทำงานกับ Linux การโต้ตอบส่วนใหญ่กับระบบจะอยู่ในรูปแบบของคำสั่ง ใน Linux กระบวนการคือการดำเนินการตามคำสั่ง การจัดการกระบวนการ Linux เกี่ยวข้องกับการจัดการกับกระบวนการที่คำสั่งได้เริ่มต้นขึ้น คุณสามารถยุติกระบวนการ เริ่มกระบวนการ หรือดำเนินกระบวนการที่ถูกยกเลิกต่อได้ คุณยังสามารถจัดการคำสั่งที่กำลังดำเนินอยู่ได้
กระบวนการ Linux มีสองประเภท:
- กระบวนการเบื้องหน้า
- กระบวนการเบื้องหลัง
กระบวนการเบื้องหน้าของ Linux
กระบวนการเบื้องหน้าเป็นกระบวนการที่กำลังดำเนินการอยู่ และโดยทั่วไปจะต้องมีการโต้ตอบกับผู้ใช้แบบเรียลไทม์อย่างต่อเนื่อง เมื่อกระบวนการเบื้องหน้ากำลังทำงาน การดำเนินการของกระบวนการอื่นจะถูกหยุดชั่วคราว ดังนั้นคุณไม่สามารถรันคำสั่งอื่นได้ กระบวนการเบื้องหน้ารับอินพุตจากคีย์บอร์ดเป็นอินพุตมาตรฐานหรือ stdin เพื่อป้องกันความสับสนเพิ่มเติม stdin และ stdout คือสตรีมข้อมูล Linux พร้อมกับ stderr โดยพื้นฐานแล้วมันเป็นวิธีที่ผู้ใช้โต้ตอบกับกระบวนการและให้ข้อมูลสำหรับกระบวนการนั้น มีเอาต์พุตมาตรฐานหรือ stdout ที่สร้างโดยกระบวนการตามฟังก์ชันการทำงานและอินพุต กระบวนการเบื้องหน้าเป็นโหมดเริ่มต้นของการดำเนินการใน Linux
กระบวนการพื้นหลัง Linux
กระบวนการเบื้องหลังเป็นสิ่งที่ตรงกันข้ามกับกระบวนการเบื้องหน้าเนื่องจากไม่ต้องการการโต้ตอบจากผู้ใช้ และไม่ได้ใช้พื้นที่เต็มของเทอร์มินัล ทำให้สามารถดำเนินการกระบวนการอื่นๆ ได้ ประเภทของอินพุตและเอาต์พุตของกระบวนการเบื้องหลังก็แตกต่างกันเช่นกัน ปกติแล้วพวกเขาจะไม่ใช้ stdin อย่างไรก็ตาม ผลลัพธ์ของกระบวนการสามารถแสดงเป็น stdout ได้ การแสดงเอาท์พุตของกระบวนการเบื้องหลังเกิดขึ้นพร้อมกันกับเอาท์พุตของกระบวนการเบื้องหน้าอื่นๆ คุณจึงสามารถดูความคืบหน้าหรือผลลัพธ์ของกระบวนการเบื้องหลังได้โดยไม่รบกวนการดำเนินการที่สำคัญอื่นๆ
เนื่องจากการดำเนินการงานที่หลากหลายใน Linux ขึ้นอยู่กับบรรทัดคำสั่ง กระบวนการเบื้องหน้าจึงอาจเป็นปัญหาได้ ในขณะที่การรันกระบวนการในเบื้องหลังจะทำให้เทอร์มินัลของคุณว่างจากการทำงานอื่น ๆ ดังนั้นการวางงานเบื้องหน้าไว้เบื้องหลังจึงเป็นสิ่งที่สมเหตุสมผลที่ต้องทำที่นี่ เพื่อ ส่งกระบวนการไปที่พื้นหลัง คุณควรหยุดไม่ให้ถูกดำเนินการในเบื้องหน้าก่อน ทำได้โดยการกด CTRL+Z จากนั้นโดยการพิมพ์คำสั่ง bg กระบวนการที่สิ้นสุดจะถูกรันอีกครั้งในเบื้องหลัง คำสั่ง fg จะย้อนกลับกระบวนการและนำไปไว้เบื้องหน้า
สถานะกระบวนการ ไวยากรณ์ คำสั่ง และการตีความผลลัพธ์
การจัดการกระบวนการที่มีประสิทธิภาพใน Linux จำเป็นต้องเข้าใจสถานะของกระบวนการที่สามารถตรวจสอบได้ด้วยคำสั่ง ps aux แต่ก่อนที่จะเจาะลึกลงไปในคำสั่ง ps aux เรามาเรียนรู้เกี่ยวกับสถานะกระบวนการต่างๆ กันก่อน แม้ว่าจะมีกระบวนการและสถานะของกระบวนการหลายประเภท แต่นี่คือตารางของกระบวนการที่พบบ่อยที่สุด:
| สถานะกระบวนการ | คำอธิบาย | |
| วิ่ง(R) | กระบวนการกำลังทำงานอยู่และใช้ทรัพยากร CPU | |
| นอนหลับ | ขัดจังหวะ (S) | กระบวนการกำลังรออินพุตหรือเหตุการณ์เฉพาะเพื่อเริ่มทำงานอีกครั้ง ขณะนี้ไม่ได้ใช้ทรัพยากร CPU เมื่อมีทรัพยากรเพียงพอหรือได้รับสัญญาณ กระบวนการจะเริ่มต้นอีกครั้ง |
| ต่อเนื่อง (D) | เช่นเดียวกับกระบวนการที่อยู่ในโหมดสลีปที่ถูกขัดจังหวะ กระบวนการสลีปอย่างต่อเนื่องไม่ได้ใช้ทรัพยากรของ CPU ข้อแตกต่างเพียงอย่างเดียวคือมันไม่ตอบสนองต่อสัญญาณ แต่จะกลับมามีชีวิตอีกครั้งเมื่อมีทรัพยากรเท่านั้น | |
| หยุด(T) | ข้อมูลของผู้ใช้หรือเหตุการณ์เฉพาะได้หยุดกระบวนการชั่วคราว กระบวนการที่อยู่ในสถานะหยุดทำงานไม่ได้ใช้ทรัพยากร CPU ใดๆ | |
| ตาย(X) | กระบวนการนี้สิ้นสุดลงแล้วและไม่มีอยู่อีกต่อไป | |
ความเข้าใจที่ดีเกี่ยวกับสถานะกระบวนการเหล่านี้เป็นส่วนสำคัญในการจัดการและแก้ไขปัญหาระบบ Linux อย่างมีประสิทธิภาพ ตอนนี้ เรามาพูดถึงไวยากรณ์และคำสั่งในการรับสถานะกระบวนการใน Linux รวมถึงวิธีตีความผลลัพธ์กัน
ไวยากรณ์และคำสั่งในการรับสถานะกระบวนการ
คุณสามารถรับสถานะกระบวนการใน Linux ด้วยไวยากรณ์พื้นฐานสำหรับคำสั่ง ps:
ps [process name]
นอกจากนี้ยังมีตัวเลือกอื่นๆ ที่ใช้กับคำสั่ง ps:
เสริม: ตัวเลือกนี้แสดงรายการที่ครอบคลุมของกระบวนการทั้งหมดที่ทำงานบนระบบ โดยให้ข้อมูล เช่น รหัสกระบวนการ (PID) รหัสกระบวนการหลัก (PPID) การใช้งาน CPU และหน่วยความจำ และสถานะของกระบวนการ เอาต์พุตที่ได้รับจากคำสั่ง ps aux นั้นเรียบร้อยกว่ามาก สามารถอ่านได้ง่ายกว่า และมีข้อมูลที่เป็นประโยชน์มากมายมากกว่าคำสั่ง ps พื้นฐาน
เอฟ: ตัวเลือกนี้แสดงรายการกระบวนการแบบเต็มรูปแบบพร้อมรายละเอียดเพิ่มเติม รวมถึงลำดับชั้นของกระบวนการที่เป็นโครงสร้างคล้ายต้นไม้
l: ตัวเลือกนี้มีรูปแบบรายการแบบยาว โดยนำเสนอข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับกระบวนการต่างๆ
ทำความเข้าใจกับผลลัพธ์
เมื่อคุณรันคำสั่ง ps ด้วยตัวเลือกที่ต้องการ จะสร้างเอาต์พุตที่แสดงถึงกระบวนการที่กำลังทำงานอยู่บนระบบของคุณในปัจจุบัน เอาต์พุตประกอบด้วยคอลัมน์ที่แสดงคุณลักษณะกระบวนการต่างๆ รวมถึง ID กระบวนการ (PID), ID กระบวนการหลัก (PPID), การใช้งาน CPU, การใช้หน่วยความจำ, สถานะกระบวนการ, ประเภทเทอร์มินัล และชื่อคำสั่ง
ต่อไปนี้เป็นคำอธิบายว่าแต่ละคอลัมน์หมายถึงอะไร:
หมายเลขผลิตภัณฑ์: คอลัมน์นี้แสดง ID เฉพาะของกระบวนการ
ไว้คุยกัน: คอลัมน์นี้แสดงประเภทของเทอร์มินัลที่ผู้ใช้เข้าสู่ระบบ
เวลา: คอลัมน์นี้เป็นตัวบ่งชี้ว่ากระบวนการนี้ใช้ CPU มากเพียงใดในหน่วยนาทีและวินาที
ซีเอ็มดี: คอลัมน์นี้แสดงถึงชื่อของคำสั่งที่เริ่มกระบวนการนี้
การวิเคราะห์ข้อมูลที่มาจากคำสั่ง ps จะทำให้คุณเข้าใจพฤติกรรมของเครื่อง Linux ของคุณได้อย่างลึกซึ้งยิ่งขึ้น
เทคนิค ps ขั้นสูงสำหรับการจัดการกระบวนการด้วยคำสั่ง ps
เรามาสำรวจคุณสมบัติขั้นสูงของคำสั่ง ps และวิธีการใช้งานอย่างมีประสิทธิภาพกันดีกว่า:
1. การเรียงลำดับกระบวนการ
คำสั่ง ps aux สามารถใช้เพื่อเรียงลำดับเอาต์พุตสุดท้ายตามคอลัมน์ต่างๆ ตัวอย่างเช่น คุณสามารถจัดเรียงกระบวนการตาม ID กระบวนการหรือการใช้งาน CPU เพื่อดูตามลำดับที่ต้องการ
ต่อไปนี้เป็นตัวอย่างของกระบวนการเรียงลำดับตามรหัสกระบวนการโดยใช้ ps aux:
ps aux –-sort pid
คำสั่ง head ใช้เพื่อรับเอาต์พุตห้าแถวแรกเท่านั้น

2. การแสดงภาพต้นไม้กระบวนการ
หากคุณต้องการเห็นความสัมพันธ์ระหว่างแม่และลูกของกระบวนการอย่างชัดเจน คุณสามารถใช้คำสั่ง ps กับตัวเลือกฟอเรสต์ได้
ps -aux --forest

หากต้องการดูความสัมพันธ์ระหว่างกระบวนการในรูปแบบคล้ายต้นไม้ คุณสามารถใช้คำสั่ง pstree ได้ คำสั่งนี้จะสร้างเอาต์พุตที่เข้าใจได้มากขึ้น และแสดงลำดับชั้นระหว่างกระบวนการได้อย่างสมบูรณ์แบบ หากต้องการใช้คำสั่งนี้ ให้พิมพ์คำสั่งต่อไปนี้:
pstree [pid or username]
ด้วยการให้ PID แก่คำสั่งนี้ คุณจะบอกให้คำสั่งพิจารณาว่ากระบวนการนั้นเป็นรากของแผนผัง
3. กระบวนการกรอง
ลองจินตนาการว่าคุณต้องการทำงานกับกลุ่มกระบวนการเฉพาะ ตัวอย่างเช่น คุณต้องการแสดงรายการกระบวนการทั้งหมดของผู้ใช้รายหนึ่ง กระบวนการกรองตามคุณลักษณะสามารถทำได้โดยใช้คำสั่ง ps ในตัวอย่างนี้ เราได้กรองกระบวนการตามชื่อผู้ใช้
ps -u [username]

และคำสั่ง ps aux grep สามารถกรองกระบวนการตามรูปแบบหรือคีย์เวิร์ดใดๆ ที่คุณระบุให้กับคำสั่ง ดูโค้ดด้านล่างเป็นตัวอย่าง:

คำสั่งนี้แสดงรายการกระบวนการทั้งหมดก่อนและส่งมอบเอาต์พุตให้กับคำสั่ง grep เพื่อกรองรายการแบบยาวนั้นตาม ID กระบวนการ ในภาพด้านบน คุณสามารถดูรายการกระบวนการทั้งหมดที่มีหมายเลข 15 ในข้อมูลได้
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่ง ps และความสามารถของมัน คุณสามารถอ่านหน้าคู่มือของคำสั่งนี้ได้ รหัสด้านล่างจะแสดงหน้าคู่มือสำหรับคุณ:
man ps
การจัดการลำดับความสำคัญของงานใน Linux
เพื่อที่จะอธิบายได้ดีขึ้นว่าการจัดการกระบวนการทำงานอย่างไรใน Linux เราควรกล่าวถึงลำดับความสำคัญของกระบวนการและวิธีการเปลี่ยนแปลงด้วย ลองนึกภาพสถานการณ์ที่คุณใช้งานหลายกระบวนการ และ CPU มีงานล้นมือ หากคุณต้องการจัดการทรัพยากรของคุณให้ทำงานอย่างถูกต้องในสถานการณ์นี้ คุณต้องเปลี่ยนลำดับความสำคัญของงานที่กำลังทำงานอยู่ แต่ละกระบวนการใน Linux มีค่าลำดับความสำคัญ ค่านี้ช่วยให้เคอร์เนลจัดลำดับความสำคัญของงาน หมายเลขลำดับความสำคัญอยู่ระหว่าง -20 ถึง 19 โดย 19 เป็นงานที่สำคัญที่สุดน้อยที่สุด และ -20 เป็นงานเร่งด่วนที่สุด กระบวนการที่มีลำดับความสำคัญสูงสุดจะได้รับเวลา CPU มากกว่าเมื่อเปรียบเทียบกับกระบวนการอื่นๆ ค่าลำดับความสำคัญมักเรียกว่าค่า "ดี" โดยค่าดีที่ต่ำกว่าจะแสดงลำดับความสำคัญที่สูงกว่า
คุณสามารถใช้คำสั่ง nice และ renice เพื่อจัดสรรรีซอร์สระบบได้อย่างมีประสิทธิภาพ
แต่ก่อนที่จะเปลี่ยนลำดับความสำคัญของกระบวนการ เรามาสำรวจกรณีการใช้งานแรกของคำสั่ง ps กันดีกว่า
- การแสดงลำดับความสำคัญปัจจุบันของกระบวนการทั้งหมดโดยใช้คำสั่ง ps:
คำสั่งนี้แสดงรายการกระบวนการทั้งหมดพร้อมกับ ID กระบวนการ (PID) ชื่อคำสั่ง และลำดับความสำคัญปัจจุบัน (ค่าที่ดี):
ps -eo pid,cmd,nice

- การเริ่มต้นกระบวนการที่มีลำดับความสำคัญสูงเป็นค่าเริ่มต้นโดยใช้คำสั่ง nice:
คุณสามารถเริ่มกระบวนการด้วยลำดับความสำคัญที่คุณต้องการได้โดยใช้คำสั่งนี้:
nice -n [priority] [command]
แทนที่ [priority] ด้วยค่าลบที่ต้องการซึ่งแสดงถึงระดับความสำคัญและ [command] ด้วยคำสั่งที่คุณต้องการดำเนินการ
นี่คือตัวอย่าง:

- การเปลี่ยนลำดับความสำคัญของคำสั่งที่รันอยู่แล้ว:
renice -n [priority] -p [PID]
แทนที่รหัสกระบวนการของกระบวนการที่คุณต้องการจัดการด้วย [PID]
หากคุณต้องการมีเครื่อง Linux ที่ทรงพลังเพื่อทำงานทุกประเภท ก ลินุกซ์ วีพีเอส เป็นทางออกที่ดีที่สุดสำหรับคุณ Cloudzy เสนอแผน Linux VPS ที่หลากหลายพร้อม distro ที่คุณต้องการติดตั้งไว้ล่วงหน้า ด้วยคุณสมบัติที่เป็นประโยชน์มากมาย เช่น การสนับสนุนตลอด 24 ชั่วโมงทุกวัน นโยบายการคืนเงินภายใน 30 วัน และการรับประกันความพร้อมในการทำงาน 99.95% Cloudzy สามารถรักษาราคาให้ต่ำได้ ราคาของเราสำหรับ Linux VPS เริ่มต้นที่เพียง $4.95/เดือน
รับ Linux VPS แบบประหยัดหรือพรีเมียมสำหรับการโฮสต์เว็บไซต์หรือเดสก์ท็อประยะไกลของคุณ ในราคาที่ถูกที่สุด VPS ทำงานบน Linux KVM เพื่อประสิทธิภาพที่เพิ่มขึ้น และทำงานบนฮาร์ดแวร์อันทรงพลังพร้อมที่เก็บข้อมูล NVMe SSD เพื่อเพิ่มความเร็ว
อ่านเพิ่มเติมบทสรุป
โดยสรุป การจัดการกระบวนการและการควบคุมระบบอย่างเชี่ยวชาญเป็นสิ่งจำเป็นสำหรับผู้ดูแลระบบ ผู้ที่ชื่นชอบ Linux ที่ต้องการเรียนรู้เพิ่มเติม และผู้ใช้ Linux ทั่วไป การเรียนรู้เกี่ยวกับความสามารถและฟังก์ชันการทำงานของคำสั่ง ps ช่วยให้การจัดการกระบวนการเรียนรู้ง่ายขึ้น นั่นเป็นสาเหตุที่บทความนี้กล่าวถึงกรณีการใช้งานที่สำคัญของคำสั่ง ps พร้อมทั้งให้ข้อมูลเบื้องต้นเกี่ยวกับกระบวนการ Linux แก่ผู้อ่าน
คำถามที่พบบ่อย
คำสั่ง ps aux ใน Linux คืออะไร?
คำสั่ง ps aux Linux เป็นคำสั่งที่ใช้กันทั่วไปใน Linux เพื่อรับข้อมูลเกี่ยวกับกระบวนการที่กำลังทำงานอยู่ โดยสามารถจัดเตรียมรายการกระบวนการที่ครอบคลุมในรูปแบบที่ใช้งานง่าย รวมถึงรหัสกระบวนการ (PID) การใช้งาน CPU และหน่วยความจำ สถานะการดำเนินการ และรายละเอียดที่สำคัญอื่นๆ
กระบวนการสองประเภทใน Linux คืออะไร?
กระบวนการเบื้องหน้าและกระบวนการเบื้องหลัง กระบวนการเบื้องหน้าจะครอบครองเทอร์มินัลในขณะที่ทำงานและไม่อนุญาตให้มีการดำเนินการอื่น กระบวนการเบื้องหลังทำงานในเบื้องหลังและไม่ใช้พื้นที่เทอร์มินัลทั้งหมด
ฉันจะดูรายการกระบวนการที่ทำงานบนระบบ Linux ของฉันได้อย่างไร
สามารถรับรายการกระบวนการที่ทำงานบนระบบ Linux ของคุณได้โดยใช้คำสั่ง เช่น ps, top หรือ htop เพื่อดู ตัวอย่างเช่น คำสั่ง Linux ps aux ให้ข้อมูลโดยละเอียดเกี่ยวกับกระบวนการที่ทำงานอยู่ทั้งหมด