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