Как определить путь к двоичному файлу процесса?
Есть ли способ узнать каталог / место на диске, с которого был запущен процесс? Я знаю о монтировании /proc, но на самом деле не знаю, где его искать.
5 ответов
/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".
Если у вас есть идентификатор процесса, вы можете использовать:
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
Все команды в других ответах хороши, но вы могли бы сделать еще больше - посмотреть, как на самом деле выполнялся какой-то процесс, прежде чем он попал в список процессов.
Запустите в терминале:
top
И пока он работает, нажмите клавиатуру C
и вы получите команду процессов, которые были запущены.
Нажмите Ctrl+Alt+T, чтобы перейти к терминалу и введите:
ls -al /proc/{pid}/fd
а затем проверьте вывод
Это перечислит все файлы, с которыми связан ваш процесс...