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ó.
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ó.
Câu trả lời:
Các /proc
cách sẽ được kiểm tra việc exe
liê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'
Có lẽ which
là những gì bạn đang tìm kiếm. Chẳng hạn, trên hệ thống của tôi
which firefox
trả lại
/usr/bin/firefox
Xem thêm Tìm đường dẫn ứng dụng chạy trên Solaris, Ubuntu, Suse hoặc Redhat Linux .
which
là tuyệt vời, nhưng nó chỉ trả về các chương trình trong $ PATH của bạn. Nếu tôi chạy RandomProgramIDownloadedToErisKnowsWhere.bin
, nó sẽ không được sử dụng nhiều.
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ế $pid
bằ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 sudo
trước nó.
Một ví dụ để xác định vị trí của lệnh firefox
:
Đầ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
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
/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
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 ...
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 C
và bạn sẽ nhận được lệnh của các quy trình đã được chạy.