ฉันสามารถใช้ GNU ps กับ OS X ได้ไหม


18

เราสามารถติดตั้ง coreutils GNUbrewผ่าน แต่ไม่มีpsใน utils เราสามารถใช้ gnu psใน OS X ได้ไหม?

ฉันต้องการใช้ GNU psเนื่องจากมีตัวเลือกและคุณสมบัติเพิ่มเติมมากมาย


คุณได้ลองใช้งานpsหรือps -efใน terminal บน OSX หรือไม่ ใช้งานได้กับฉันใน OSX 10.7.5 โดยไม่มีการดัดแปลงบนสองเครื่องที่แตกต่างกัน อยู่ใน / bin / ps
jammypeach

ใช่ฉันรู้ว่าฉันต้องการใช้ GNU psเพราะมีตัวเลือกและคุณสมบัติมากมาย
Sanghyun Lee

อ่าขอโทษด้วยที่ฉันไม่รู้ตัวจากคำถามดังกล่าว ฉันขอแนะนำให้รวมถึงบางที่ในกรณีที่คนอื่นคิดเช่นเดียวกับฉัน - โชคดีกับการหาวิธีแก้ปัญหา
jammypeach

ขอบคุณสำหรับคำแนะนำ ฉันเพิ่มคำอธิบายเพิ่มเติมเกี่ยวกับสิ่งนั้น
Sanghyun Lee

คำตอบ:


22

ไม่มีโปรแกรม ps แบบพกพา คำสั่ง ps พร้อมใช้งานบน linux คือตามที่ผู้อื่นได้กล่าวถึงจากแพ็คเกจ "procps" เหตุผลที่สิ่งนี้ไม่สามารถย้ายไปยัง OSX ได้เนื่องจากเคอร์เนล Linux และ OSX ไม่ได้เปิดเผยข้อมูลนี้ในลักษณะเดียวกัน Linux ใช้ระบบไฟล์หลอกใน / proc ในขณะที่ OSX ใช้ฟังก์ชั่น sysctl ระบบอื่นอาจใช้กลไกใดก็ได้ แต่ให้ข้อมูลในรูปแบบที่แตกต่างกันหรืออาจต้องการโปรแกรมเช่น ps เพื่ออ่านโดยตรงจากหน่วยความจำของเคอร์เนล

โดยทั่วไปไม่มีมาตรฐานสำหรับวิธีการที่ข้อมูลกระบวนการพร้อมใช้งานสำหรับโปรแกรมเช่น ps และ top ดังนั้นโปรแกรมจะต้องได้รับการออกแบบสำหรับระบบปฏิบัติการเฉพาะ หากไม่มีคุณสมบัติเฉพาะที่ขาดหายไปจาก OSX ps คุณจะต้องค้นหาโปรแกรมอื่นที่สามารถทำได้หรือเขียนด้วยตัวคุณเอง (ดูที่คู่มือ sysctl โดยเฉพาะอย่างยิ่ง KERN_PROC โดยเฉพาะเป็นจุดเริ่มต้น) หรือแก้ไขps ที่มีอยู่ คำสั่งเพื่อเพิ่มคุณสมบัติ

อีกทางหนึ่งหากคุณสามารถได้รับสิ่งที่คุณต้องการโดยการแยกวิเคราะห์ผลลัพธ์ของคำสั่ง ps คุณอาจจะสามารถเขียนโปรแกรมพกพา - เอาต์พุตพร้อม-oตัวเลือกนั้นมีความน่าเชื่อถือพอสมควรในทุกแพลตฟอร์มโดยเฉพาะอย่างยิ่งถ้าคุณอ้างถึงมาตรฐาน UNIXสำหรับ ชื่อคอลัมน์ที่จะใช้


เป็น/procระบบแฟ้มวิธีเดียวที่ลินุกซ์เคอร์เนลให้ได้รับรายชื่อของกระบวนการหรือยังจะมีการโทรระบบที่แยกต่างหากที่ให้ข้อมูลที่?
แทนเนอร์ Swett

1
@ แทนเนอร์สเวตต์ฉันไม่คิดอย่างนั้น ก่อน / proc ถูกนำไปใช้คำสั่ง ps บน linux ทำงานโดยอ่านจาก / dev / kmem และ / dev / swap
Random832

9

ไม่ - เนื่องจากไม่มีอยู่ สำหรับสาเหตุที่ไม่มี builtin psในcoreutilsแพ็คเกจของ GNU ให้ดูคำตอบนี้ในฟอรัม Unix & Linux

สูตรทางเลือกที่ดีที่สุดที่มีให้ผ่าน Homebrew คือpsgrep:

psgrep เป็นสคริปต์เชลล์ Bash ขนาดเล็กที่ค้นหารายการกระบวนการ (ตามที่ได้รับจากps (1) ) โดยใช้grepยูทิลิตี้ที่ยอดเยี่ยม(1) สำหรับพลังงานของมัน

ที่กล่าวว่าคุณยังคงสามารถใช้งานได้psgrepตามที่ OS X psต้องการ ตัวอย่างเช่น:

   OPTIONS
   -a     Search the process list using BSD's "ps aux" format. This option
          includes all users' processes in the search.

   -b     Search the process list using BSD's "ps  ux"  format  (default).
          This option only includes the running user's processes.

pgrepมีให้บริการผ่านทางbrewซึ่งใกล้กับ syntactically psแต่มีประสิทธิภาพน้อยกว่าpsgrep:

psgrep (1)มีประโยชน์มากกว่าpgrep (1)เพราะไม่เพียง แต่จะสามารถค้นหารายการกระบวนการและส่งคืน PID ได้ แต่ก็สามารถให้ข้อมูลที่เป็นประโยชน์มากขึ้นเช่น UID, GID, การใช้หน่วยความจำ / CPU, ความเหมาะสมและอื่น ๆ โดย ps


เหมืองเน้นทั้งหมด


2
pgrepเป็นส่วนหนึ่งของ OS X เวอร์ชันล่าสุดเช่นกัน
nohillside

@patrix agh! จุดดีได้รับการยืนยัน:type -a pgrep pgrep is /usr/local/bin/pgrep pgrep is /usr/bin/pgrep
njboot

เช่นเดียวกับกันตามที่กล่าวไว้ที่นี่ที่proctoolsแพคเกจจาก MacPorts หรือ Homebrew ให้pgrepและpkillซึ่งเป็นสิ่งที่ผมเองกำลังมองหาเมื่อฉันมีขึ้นที่นี่
TheDudeAbides

3

psไม่ได้เป็นส่วนหนึ่งของ coreutils GNU ตามWikpedia รุ่นที่มาพร้อมกับการกระจาย Linux ของฉันน่าจะมาจากprocpsแต่ดูเหมือนว่าไม่มีสูตรสำหรับ homebrew มีสูตรpstreeที่สามารถให้มุมมองแบบต้นไม้ที่ยอดเยี่ยมแก่คุณและยังhtopเป็นตัวแสดงกระบวนการที่ดีอีกวิธีหนึ่ง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.