Есть ли способ узнать каталог / место на диске, с которого был запущен процесс? Я знаю о монтировании / proc, но на самом деле не знаю, где его искать.
whichэто круто, но он возвращает только программы в вашем $ PATH. Если я побегу RandomProgramIDownloadedToErisKnowsWhere.bin, это не принесет особой пользы.
djeikyb
6
Если у вас есть идентификатор процесса, вы можете использовать:
readlink -f /proc/$pid/exe
(заменить $pidидентификатором процесса)
Если процесс не принадлежит вам, вам придется поставить sudoперед ним.
Пример определения местоположения команды firefox:
Вы можете делать классные вещи с помощью /proc/$pid/exe, если двоичный файл случайно удален, вы можете восстановить его с помощью:dd if=/proc/$pid/exe of=restored-binary
Lekensteyn
1
Нажмите Ctrl+ Alt+, Tчтобы перейти к терминалу и введите:
ls -al /proc/{pid}/fd
а затем проверьте вывод
Это перечислит все файлы, с которыми связан ваш процесс ...
Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читабельность ваших ответов в будущем ... ;-)
Fabby
0
Все команды в других ответах хороши, но вы могли бы сделать еще больше - посмотреть, как на самом деле выполнялся какой-то процесс, прежде чем он попал в список процессов.
Запустите в терминале:
top
И пока он работает, нажмите клавиатуру, Cи вы получите команду процессов, которые были запущены.
Ответы:
Можно
/proc
было бы проверитьexe
ссылку в каталоге, соответствующем pid.Давайте рассмотрим пример с
update-notifier
:Найдите pid 15421 в этом примере:
Посмотрите на символическую ссылку:
источник
Может быть,
which
это то, что вы ищете. Например, в моей системевозвращается
См. Также раздел «Найти путь к приложениям, работающим в Solaris, Ubuntu, Suse или Redhat Linux» .
источник
which
это круто, но он возвращает только программы в вашем $ PATH. Если я побегуRandomProgramIDownloadedToErisKnowsWhere.bin
, это не принесет особой пользы.Если у вас есть идентификатор процесса, вы можете использовать:
(заменить
$pid
идентификатором процесса)Если процесс не принадлежит вам, вам придется поставить
sudo
перед ним.Пример определения местоположения команды
firefox
:Выход из
ps ax -o pid,cmd | grep firefox
:28179
это идентификатор процесса, поэтому вы должны запустить:какие выводы:
источник
/proc/$pid/exe
, если двоичный файл случайно удален, вы можете восстановить его с помощью:dd if=/proc/$pid/exe of=restored-binary
Нажмите Ctrl+ Alt+, Tчтобы перейти к терминалу и введите:
а затем проверьте вывод
Это перечислит все файлы, с которыми связан ваш процесс ...
источник
Все команды в других ответах хороши, но вы могли бы сделать еще больше - посмотреть, как на самом деле выполнялся какой-то процесс, прежде чем он попал в список процессов.
Запустите в терминале:
И пока он работает, нажмите клавиатуру,
C
и вы получите команду процессов, которые были запущены.источник