13

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

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

6 ответов6

20

Попробуй это:

ls -l /proc/<PID>/cwd
7

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

readlink /proc/<PID>/cwd

или даже

readlink /proc/$(pgrep <program_name>)/cwd
2

Дубликат https://unix.stackexchange.com/questions/94357/find-out-current-working-directory-of-a-running-process ?

Есть 3 метода, о которых я знаю:

pwdx

$ pwdx PID

Lsof

$ lsof -p PID | grep cwd

/ Proc

$ readlink -e / proc / PID / cwd

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .