มีวิธีการค้นหาไดเรกทอรี / ตำแหน่งที่ตั้งดิสก์กระบวนการเริ่มต้นจาก? ฉันรู้เกี่ยวกับ / proc mount แต่ไม่ใช่ตำแหน่งที่จะมองเข้าไป
มีวิธีการค้นหาไดเรกทอรี / ตำแหน่งที่ตั้งดิสก์กระบวนการเริ่มต้นจาก? ฉันรู้เกี่ยวกับ / proc mount แต่ไม่ใช่ตำแหน่งที่จะมองเข้าไป
คำตอบ:
/proc
วิธีที่จะตรวจสอบexe
การเชื่อมโยงในไดเรกทอรีที่สอดคล้องกับกํา
ลองตัวอย่างด้วยupdate-notifier
:
ค้นหา pid ซึ่งเป็น15421ในตัวอย่างนี้:
egil@gud:~$ ps x | grep update-notifier
2405 pts/4 S+ 0:00 grep update-notifier
15421 ? Sl 0:00 update-notifier
ค้นหาลิงก์สัญลักษณ์:
egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'
อาจwhich
เป็นสิ่งที่คุณกำลังมองหา ตัวอย่างเช่นในระบบของฉัน
which firefox
ผลตอบแทน
/usr/bin/firefox
ดูยังหาเส้นทางของแอพลิเคชันที่ทำงานบนระบบปฏิบัติการ Solaris, อูบุนตู Suse หรือ Redhat ลินุกซ์
which
เจ๋ง แต่มันจะคืนค่าโปรแกรมใน $ PATH ของคุณเท่านั้น ถ้าฉันวิ่งRandomProgramIDownloadedToErisKnowsWhere.bin
สิ่งนี้จะไม่ใช้งานมากนัก
หากคุณมี ID กระบวนการคุณสามารถใช้:
readlink -f /proc/$pid/exe
(แทนที่$pid
ด้วย ID กระบวนการของกระบวนการ)
หากกระบวนการไม่ได้เป็นเจ้าของโดยคุณคุณจะต้องใส่sudo
ในด้านหน้าของมัน
ตัวอย่างสำหรับการระบุตำแหน่งของคำสั่งfirefox
:
ผลลัพธ์ของps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
เป็น ID กระบวนการดังนั้นคุณต้องเรียกใช้:
readlink -f /proc/28179/exe
ผลลัพธ์ใด:
/usr/bin/firefox
/proc/$pid/exe
หากไบนารีถูกลบโดยไม่ตั้งใจคุณสามารถคืนค่าได้ด้วย:dd if=/proc/$pid/exe of=restored-binary
กดCtrl+ Alt+ Tเพื่อไปที่เทอร์มินัลแล้วพิมพ์:
ls -al /proc/{pid}/fd
จากนั้นตรวจสอบผลลัพธ์
นี่จะแสดงรายการไฟล์ทั้งหมดที่กระบวนการของคุณเชื่อมโยงกับ ...
คำสั่งทั้งหมดในคำตอบอื่น ๆ นั้นดี แต่คุณสามารถทำได้มากขึ้น - ดูว่ากระบวนการบางอย่างได้รับการทำงานจริงก่อนที่จะเข้าสู่รายการกระบวนการ
ทำงานใน terminal:
top
และในขณะที่มันกำลังทำงานให้กดแป้นพิมพ์C
และคุณจะได้รับคำสั่งของกระบวนการที่ถูกเรียกใช้