Linux - Znajdź aktualny katalog roboczy procesu?


11

Jeśli mam proces PID X, jak mogę dowiedzieć się, w którym katalogu był uruchomiony? Widzę z ps aux | grep Xpełnym wierszem poleceń, z którym został wywołany. Jednak w tym przypadku tak jest ./script.shi chcę zobaczyć, który z script.shnich działa.

Odpowiedzi:


11

Problem /proc/PID/exepolega na tym, że w przypadku skryptów powłoki pokazuje ona lokalizację powłoki. Problem /proc/PID/cwdpolega na tym, że pokazuje bieżący katalog roboczy procesu. Jeśli proces zmienia katalogi, jest to odzwierciedlone w celu tego dowiązania symbolicznego.

Spowoduje to wyświetlenie $ PWD w momencie uruchomienia skryptu (zamień interesujący Cię identyfikator procesu, gdzie widzisz „PID”):

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

lub po prostu:

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

Spowoduje to wyświetlenie polecenia, które je uruchomiło, abyś mógł zobaczyć, czy użyto katalogu względnego czy bezwzględnego:

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

lub po prostu:

grep -az PROC_NAME /proc/PID/cmdline

Razem powinny one pokazać, który skrypt jest uruchamiany. Dla jednego, który zaczął ./wszystko, czego potrzebujesz, to procdir.


pwdx jest lepszy niż ten.
Bjorn,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.