Quelle commande (s) peut-on utiliser pour connaître le répertoire de travail actuel (CWD) d'un processus en cours d'exécution? Ce sont des commandes que vous pouvez utiliser en externe à partir du processus.
168
Quelle commande (s) peut-on utiliser pour connaître le répertoire de travail actuel (CWD) d'un processus en cours d'exécution? Ce sont des commandes que vous pouvez utiliser en externe à partir du processus.
Il y a 3 méthodes que je connais:
$ pwdx <PID>
$ lsof -p <PID> | grep cwd
$ readlink -e /proc/<PID>/cwd
Disons que nous avons ce processus.
$ pgrep nautilus
12136
Alors si on utilise pwdx
:
$ pwdx 12136
12136: /home/saml
Ou vous pouvez utiliser lsof
:
$ lsof -p 12136 | grep cwd
nautilus 12136 saml cwd DIR 253,2 32768 10354689 /home/saml
Ou vous pouvez fouiller directement dans le /proc
:
$ readlink -e /proc/12136/cwd/
/home/saml
/proc
.pwdx
travaille pour moi.pgrep <process-name>
Je suppose que vous avez l'ID de processus dans
pid
. La plupart des méthodes sur la plupart des systèmes requièrent que le shell à partir duquel vous faites cela s'exécute sous le même utilisateur que le processus cible (ou racine).Sous Linux et Solaris et peut-être d'autres unix System V:
Sous Linux (à l'exception des systèmes intégrés où
readlink
n'est pas disponible) mais pas sous Solaris:Vous pouvez utiliser à peu près n'importe quelle variante unix
lsof
. Attention, s'il existe une nouvelle ligne, elle sera imprimée sous la forme\n
(indiscernable de la barre oblique inverse suivie den
). Si vous vous sentez chanceux, vous pouvez utiliser le deuxième formulaire, qui étouffe silencieusement tous les espaces du nom du répertoire.Bonus: si vous devez faire en sorte qu'un processus modifie son répertoire actuel, vous pouvez le faire avec un débogueur. Ceci est utile par exemple pour déplacer un programme de longue durée qui ne se soucie pas de son répertoire actuel du répertoire que vous souhaitez supprimer. Tous les programmes n'apprécient pas d'avoir leur répertoire actuel changé sous leurs pieds - par exemple, un shell risque de planter.
la source
pwdx
autres Unix?pwdx
est présent sur Solaris depuis le 20e siècle, Linux depuis le milieu des années 2000 (imitant Solaris, dit la page de manuel). Non présent sur aucun autre unix autant que je sache.pwdx
il?Si votre système a
/proc
, vous pouvez toujours faire:Si vous souhaitez connaître le CWD à partir d'un processus différent de celui qui vous intéresse, vous devez évidemment le remplacer
$$
par le PID de votre processus d'intérêt.la source
Basé @Gilles répondre ..
Si vous connaissez le PID de votre processus. Pour Mac OSX et Linux :
pour obtenir le travail du processus ..
la source