Как узнать из какой папки запущен процесс?

15

В * nix вы можете использовать, psчтобы увидеть, какой процесс запущен. Но если исполняемый файл имеет несколько одноименных файлов на устройстве, мы не можем понять, откуда оно было вызвано.

Это немного отличается от моего последнего вопроса на эту тему. Как я могу узнать абсолютный путь запущенного процесса?

Джадер Диас
источник

Ответы:

7

Полученный от HUB ответ:

readlink /proc/<PID>/cwd

или даже

readlink /proc/$(pgrep <program_name>)/cwd
jpaugh
источник
+1 Вывод readlinkможно лучше разобрать в скрипте.
Марко Леогранде
2

Вы не можете сказать , где процесс был вызван из , только там , где он в настоящее время находится . Посмотрите на cwdссылку («текущий рабочий каталог») вместо exe.

Игнасио Васкес-Абрамс
источник
1

Я думаю, что эта команда должна работать. Это небольшой обходной путь, но он работает по крайней мере на моей машине.

для strlist в $ (ps e PID); сделайте if [$ {strlist: 0: 4} = "PWD ="]; затем echo $ {strlist: 4}; fi; сделано

Энрико
источник
0

Когда я побежал

ps auxwwwe | grep executableName > dump
vim dump

Я смог найти ту часть пути, которую знал, а затем выяснил, из какого подкаталога была вызвана команда

Джадер Диас
источник