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.