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.