Есть ли способ узнать каталог / место на диске, с которого был запущен процесс? Я знаю о монтировании / 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
а затем проверьте вывод
Это перечислит все файлы, с которыми связан ваш процесс ...
Все команды в других ответах хороши, но вы могли бы сделать еще больше - посмотреть, как на самом деле выполнялся какой-то процесс, прежде чем он попал в список процессов.
Запустите в терминале:
top
И пока он работает, нажмите клавиатуру, C
и вы получите команду процессов, которые были запущены.