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.

  • C'è una differenza tra come due amatori e un semipolo funzionano in bash?
  • in alto mostra solo i processi utente attuali
  • `ssh foo" <command /> "` non caricare gli alias remoti?
  • In Bash, il file inizia con un "-"
  • Come si può impostare il titolo di un terminal con il command 'tput'?
  • Le migliori pratiche e suggerimenti delle row di command di Linux?
  • 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.