Linux – Scopri la directory di lavoro corrente di un process?

Se ho un process PID X, come posso scoprire quale directory è in esecuzione? Posso vedere con ps aux | grep X ps aux | grep X la linea di command completa con cui è stato richiamato. Tuttavia in questo caso è ./script.sh , e voglio vedere quale script.sh è in esecuzione.

  • Zabbix: monitorare il tasso di spawn dei bambini
  • Arresta il completamento della tab bash dal pensare che voglio fare cd nelle directory .svn
  • Come faccio a uccidere processi più vecchi di "t"?
  • trovare la dimensione della pagina e il numero di pagine di un process in linux
  • Come modificare la shell predefinita in FreeBSD?
  • Come aggiungere un timestamp al log script di bash?
  • 2 Solutions collect form web for “Linux – Scopri la directory di lavoro corrente di un process?”

    Il problema con /proc/PID/exe è che per gli script di shell mostra la posizione della shell. Il problema con /proc/PID/cwd è quello che mostra la directory di lavoro corrente del process. Se il process modifica le directory, ciò si riflette nell'objective di quel simbolo.

    Ciò mostrerà ciò che il PWD era al momento in cui è stato avviato lo script (sostituire l'ID di process in cui ti interessa vedere "PID"):

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

    o semplicemente:

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

    Questo mostrerà il command 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 mostrare quale script è in esecuzione. Per chi è iniziato con ./ tutto ciò che serve è procdir .

    C'è una risposta più semplice, e questo è usare pwdx , come qui dettagliato

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.