Чи є спосіб дізнатися розташування каталогу / диска, з якого було розпочато процес? Мені відомо про кріплення / proc, але не дуже, де його заглянути.
Чи є спосіб дізнатися розташування каталогу / диска, з якого було розпочато процес? Мені відомо про кріплення / proc, але не дуже, де його заглянути.
Відповіді:
Таким /proc
способом було б перевірити exe
посилання в каталозі, що відповідає pid.
Візьмемо приклад із 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, Ubuntu, Suse або Redhat Linux .
which
класно, але він повертає програми лише у вашому $ PATH. Якщо я побіжу RandomProgramIDownloadedToErisKnowsWhere.bin
, це не принесе користі.
Надавши ідентифікатор процесу, ви можете використовувати:
readlink -f /proc/$pid/exe
(замінити $pid
ідентифікатором процесу для процесу)
Якщо процес не належить вам, вам доведеться поставити sudo
перед ним.
Приклад визначення місця розташування команди firefox
:
Вихід ps ax -o pid,cmd | grep firefox
:
22831 grep --color=auto firefox
28179 /usr/lib/firefox-4.0.1/firefox-bin
28179
ідентифікатор процесу, тому вам потрібно запустити:
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
а потім перевірити вихід
Тут буде вказано всі файли, з якими пов'язаний ваш процес ...