Linux - узнать текущий рабочий каталог процесса?


11

Если у меня есть PID X процесса, как я могу узнать, в каком каталоге он запущен? По ps aux | grep Xполной командной строке я вижу, что она была вызвана. Тем не менее, в этом случае ./script.sh, и я хочу посмотреть, какой script.shон работает.

Ответы:


11

Проблема /proc/PID/exeв том, что для сценариев оболочки он показывает расположение оболочки. Проблема в /proc/PID/cwdтом, что он показывает текущий рабочий каталог процесса. Если процесс изменяет каталоги, это отражается в цели этой символической ссылки.

Это покажет, каким был $ PWD во время запуска сценария (замените идентификатор процесса, который вас интересует, где вы видите «PID»):

procdir=$(grep -az "\bPWD" /proc/PID/environ); echo $procdir

или просто:

grep -az "\bPWD" /proc/PID/environ

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

proccmd=$(grep -az PROC_NAME /proc/PID/cmdline); echo $proccmd

или просто:

grep -az PROC_NAME /proc/PID/cmdline

Вместе они должны показать вам, какой скрипт запускается. Для начала ./все, что вам нужно, это procdir.


PWDX лучше, чем это.
Бьорн

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.