Làm cách nào để xác định đường dẫn đến nhị phân của một quá trình?


30

Có cách nào để tìm ra vị trí thư mục / đĩa mà một quá trình đã được bắt đầu không? Tôi biết về mount / Proc nhưng không thực sự nhìn vào bên trong nó.


1
Bạn có nghĩa là vị trí của nhị phân, hoặc thư mục mà một quá trình bắt đầu?
Lekensteyn

Xin lỗi vì sự mơ hồ, ý tôi là nhị phân
SuperJumbo

Câu trả lời:


37

Các /proccách sẽ được kiểm tra việc exeliên kết trong thư mục tương ứng với pid.

Hãy lấy một ví dụ với update-notifier:

Tìm pid, là 15421 trong ví dụ này:

egil@gud:~$ ps x | grep update-notifier
 2405 pts/4    S+     0:00 grep update-notifier
15421 ?        Sl     0:00 update-notifier

Tra cứu liên kết tượng trưng:

egil@gud:~$ file /proc/15421/exe
/proc/15421/exe: symbolic link to `/usr/bin/update-notifier'

Ồ vâng, tôi đã gần như ở đó. Truyền thuyết, cảm ơn bạn.
SuperJumbo


6

Cung cấp cho bạn ID tiến trình có sẵn, bạn có thể sử dụng:

readlink -f /proc/$pid/exe

(thay thế $pidbằng ID tiến trình của một quy trình)

Nếu quy trình không thuộc sở hữu của bạn, bạn sẽ phải đặt sudotrước nó.

Một ví dụ để xác định vị trí của lệnh firefox:

  1. Đầu ra của ps ax -o pid,cmd | grep firefox:

    22831 grep --color=auto firefox
    28179 /usr/lib/firefox-4.0.1/firefox-bin
    
  2. 28179 là ID tiến trình, vì vậy bạn sẽ chạy:

    readlink -f /proc/28179/exe
    

    đầu ra nào:

    /usr/bin/firefox
    

2
Bạn có thể làm những điều tuyệt vời với /proc/$pid/exe, nếu nhị phân vô tình bị xóa, bạn có thể khôi phục nó bằng:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn

1

Nhấn Ctrl+ Alt+ Tđể đi đến một thiết bị đầu cuối và gõ:

ls -al /proc/{pid}/fd  

và sau đó kiểm tra đầu ra

Điều này sẽ liệt kê tất cả các tệp mà quá trình của bạn được liên kết với ...


Bạn có thể vui lòng xem lại các chỉnh sửa của tôi và cũng xem lại trợ giúp chỉnh sửa để cải thiện khả năng đọc câu trả lời của bạn trong tương lai ... ;-)
Fabby

0

Tất cả các lệnh trong các câu trả lời khác đều tốt, nhưng bạn thậm chí có thể làm nhiều hơn - xem cách một số quy trình đã thực sự chạy trước khi nó vào danh sách quy trình.

Chạy trong thiết bị đầu cuối:

top

Và trong khi nó đang chạy, nhấn bàn phím Cvà bạn sẽ nhận được lệnh của các quy trình đã được chạy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.