`ps aux` ที่เขียนด้วย Bash โดยไม่ต้องใช้ fork
(github.com/izabera)การทำ ps aux ด้วย bash
-
คำถามสัมภาษณ์: สามารถสมมติสถานการณ์ต่อไปนี้เป็นคำถามสัมภาษณ์สำหรับตำแหน่งที่ต้องมีความรู้เกี่ยวกับ bash/linux
- กำลังใช้ bash shell บนเครื่องที่เชื่อมต่อผ่าน SSH อยู่ แต่เป็นสถานการณ์ที่ไม่สามารถสร้างโปรเซสใหม่ได้
- ถ้า PID ทั้งหมดถูกใช้งานอยู่ จะทำอย่างไร
-
วิธีแก้: ใช้เครื่องมือนี้แล้วสามารถทำงานได้เสมือนใช้คำสั่ง
ps aux- ไม่ได้ทำงานได้ 100% ในทุกสถานการณ์ แต่ทำงานได้คล้ายกัน
สรุปโดย GN⁺
- บทความนี้นำเสนอวิธีที่ใช้แทนคำสั่ง
ps auxได้ ในสถานการณ์ที่ไม่สามารถสร้างโปรเซสใหม่จาก bash shell ได้ - อธิบายวิธีตรวจสอบโปรเซสของระบบผ่านสคริปต์ bash
- วิธีนี้อาจทำงานได้ไม่สมบูรณ์แบบในทุกสถานการณ์ แต่มีประโยชน์ได้ในสภาพแวดล้อมที่มีข้อจำกัด
- เครื่องมืออื่นที่ให้ความสามารถคล้ายกัน ได้แก่
htopหรือคำสั่งtop
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ปัญหาที่ยากที่สุดในวิทยาการคอมพิวเตอร์คือการจัดแนว
ตัวอย่างคำถามสัมภาษณ์ที่ต้องอาศัยความรู้เกี่ยวกับ bash/Linux
/proc/[pid]/killเป็นคำสั่ง built-in ของ bash จึงใช้งานได้โดยไม่ต้องสร้างโปรเซสใหม่ประสบการณ์สัมภาษณ์ตำแหน่ง SRE ที่บริษัทเทคขนาดใหญ่ในสหรัฐเมื่อปี 2011
netstatด้วย bash/proc/เลยเขียนโปรแกรมทดแทนpsและfuserแทนIzabera จาก bash@libera เป็นหนึ่งในผู้เชี่ยวชาญด้าน bash
ตัวอย่างโค้ด bash ที่สะอาด
เป็นคำถามว่าจะแก้ปัญหาอย่างไรเมื่อไม่สามารถสร้างโปรเซสใหม่ได้เพราะ PID ถูกใช้งานหมดแล้ว
ใช้งานไม่ได้บน bash 3.2 แต่ใช้งานได้บน bash 4.2
printfของโค้ดตัวอย่างมีข้อเสนอกรณีใช้งานที่ดีกว่าสำหรับการแสดงรายการโปรเซสบนระบบที่ไม่ได้ติดตั้ง procps
สามารถเขียน listener และ client ด้วย bash ได้เช่นกัน แต่ในทางปฏิบัติไม่แนะนำ