Linux - Scopri l'attuale directory di lavoro di un processo?


11

Se ho un processo PID X, come posso sapere in quale directory era in esecuzione? Posso vedere con ps aux | grep Xl'intera riga di comando con cui è stato invocato. Tuttavia, in questo caso è ./script.sh, e voglio vedere quale script.shè in esecuzione.

Risposte:


11

Il problema /proc/PID/exeè che, per gli script di shell, mostra la posizione della shell. Il problema /proc/PID/cwdè che mostra l' attuale directory di lavoro del processo. Se il processo cambia directory, ciò si riflette nella destinazione di quel collegamento simbolico.

Questo mostrerà quale era $ PWD al momento dell'avvio dello script (sostituisci l'ID del processo che ti interessa dove vedi "PID"):

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

o semplicemente:

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

Questo mostrerà il comando che lo ha avviato in modo da poter vedere se è stata utilizzata una directory relativa o assoluta:

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

o semplicemente:

grep -az PROC_NAME /proc/PID/cmdline

Insieme, questi dovrebbero mostrarti quale script è in esecuzione. Per uno iniziato con ./tutto ciò che serve è procdir.


pwdx è meglio di questo.
Bjorn,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.