มีวิธีการค้นหาไดเรกทอรี / ตำแหน่งที่ตั้งดิสก์กระบวนการเริ่มต้นจาก? ฉันรู้เกี่ยวกับ / 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และคุณจะได้รับคำสั่งของกระบวนการที่ถูกเรียกใช้