วิธีรับชื่อกระบวนการจาก PID ใน MacOS


13

เป็นไปได้ที่จะได้รับชื่อไฟล์ของกระบวนการโดยใช้ PID หรือไม่? ps แสดงข้อมูลที่เป็นประโยชน์มากมายเกี่ยวกับกระบวนการ แต่ไม่ได้มีคำใบ้เกี่ยวกับตำแหน่งของไฟล์ที่ประมวลผล

คำตอบ:


13

วิธีการหนึ่งของการตั้งไบนารีของกระบวนการคือการใช้งานlsofและgrepเป็นครั้งแรกtxtส่วน ยกตัวอย่างเช่นในเปลือกเพื่อดูสิ่งที่ binary เปลือกคือใช้เปลือก PID $$ในสถานที่ของ

$ lsof -p $$ | grep txt
bash    78228 blair  txt    REG   14,2   1244928   6568359 /bin/bash
bash    78228 blair  txt    REG   14,2   1059792  23699809 /usr/lib/dyld
bash    78228 blair  txt    REG   14,2 136368128  81751398 /private/var/db/dyld/dyld_shared_cache_i386

คุณสามารถเห็นได้ว่าเชลล์ใช้งาน/bin/bashอยู่

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

$ sleep 1234567

และการใช้งานpsในเชลล์อื่นแสดงให้เห็นว่ามันเปิดตัวอย่างไร:

$ ps auxww|grep '[s]leep'
blair    79462   0.0  0.0   600908    744 s011  S+   11:17PM   0:00.00 sleep 1234567

ใช้lsofแสดงให้เห็นว่ามันวิ่งไบนารี:

$ lsof -p 79462 | awk '$4 == "txt" { print $9 }'
/opt/local-development/bin/gsleep

ฉันมี MacPorts coreutils + with_default_names ติดตั้งซึ่งจะอธิบายว่าผมหยิบขึ้นมาและไม่ได้gsleep/bin/sleep


การส่งออกท่อผ่าน lsof ผ่าน awk ใช้งานได้ดีด้วยการเพิ่มเพียงเล็กน้อย ฉันเพิ่ม; exitหลังคำสั่งการพิมพ์เพื่อให้เฉพาะtxtรายการแรกเท่านั้นที่จะพิมพ์แม้ว่าจะมีหลายรายการในตัวอย่าง bash
qqx

2

ตัวอย่าง: คุณอยู่หลังชื่อคำสั่งกระบวนการเชื่อมโยงสำหรับPID 45109...

>    % ps awx | awk '$1 == 45109 { print $5 }'
>    /Applications/Safari.app/Contents/MacOS/Safari

2
จะไม่แสดงเส้นทางไบนารีแบบเต็มหากไบนารีเริ่มต้นด้วยชื่อโดยไม่ได้ระบุเส้นทาง
grigoryvp

ทำงานไม่ถูกต้องหากเส้นทางมีช่องว่าง
Peter Lapisu


1

ps -ef กับ grep ใช้ได้สำหรับฉัน สำหรับชื่อไฟล์เฉพาะให้ไพพ์ผ่าน grep ดังนี้:

MacBook:~ Me$ ps -ef | grep Safari | grep -v grep
  501 15733   301   0   0:25.76 ??         1:58.24 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_4977855

(สุดท้ายนั้น 'grep -v grep' เพียงแค่หยุดคุณได้รับคำสั่ง grep ของคุณเองในผลลัพธ์)


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