Linux - Découvrez le répertoire de travail actuel d'un processus?


11

Si j'ai un processus PID X, comment savoir dans quel répertoire il s'exécutait? Je peux voir avec ps aux | grep Xla ligne de commande complète avec laquelle il a été invoqué. Cependant, dans ce cas, c'est le cas ./script.sh, et je veux voir lequel script.shfonctionne.

Réponses:


11

Le problème /proc/PID/exeest que, pour les scripts shell, il indique l'emplacement du shell. Le problème avec /proc/PID/cwdest qu'il affiche le répertoire de travail actuel du processus. Si le processus change de répertoire, cela se reflète dans la cible de ce lien symbolique.

Cela montrera ce qu'était $ PWD au moment du démarrage du script (remplacez l'ID de processus qui vous intéresse par où vous voyez "PID"):

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

ou simplement:

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

Cela montrera la commande qui l'a démarrée afin que vous puissiez voir si un répertoire relatif ou absolu a été utilisé:

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

ou simplement:

grep -az PROC_NAME /proc/PID/cmdline

Ensemble, ceux-ci devraient vous montrer quel script est en cours d'exécution. Car on a commencé avec ./tout ce dont vous avez besoin procdir.


pwdx est mieux que cela.
Bjorn

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.