Comment vérifier quels processus spécifiques (scripts Python) sont en cours d'exécution?

12

En utilisant la commande 'top', je peux voir que 2 scripts python sont en cours d'exécution. Cependant, comment puis-je vérifier leurs noms ou leur répertoire / emplacement? Je veux les identifier afin de voir ce qui fonctionne correctement et ce qui ne fonctionne pas.

Utilisateur
la source
1
lsof -p $PIDserait un bon début. $PIDpeut également être une liste de PID délimitée par des virgules. De plus, des tonnes de données seront exposées dans /proc/$PID/.
DopeGhoti

Réponses:

18

Vous pouvez obtenir une liste des processus python en utilisant pgrep:

pgrep -lf python

Cependant, cela ne répertorie pas la ligne de commande entière. Si vous avez une version récente de pgrepvous pouvez utiliser -a pour ce faire:

pgrep -af python

Sinon, vous pouvez utiliser /proc:

IFS=" " read -ra pids < <(pgrep -f python)
for pid in "${pids[@]}"; do
    printf '%d: ' "$pid"
    tr '\0' ' ' < "/proc/$pid/cmdline"
    echo
done
Chris Down
la source
3

J'utilise habituellement ps -fA | grep pythonpour voir quels processus sont en cours d'exécution.

Cela vous donnera des résultats comme les suivants:

UID     PID   PPID  C STIME TTY      TIME     BIN            CMD
user    3985  3960  0 19:46 pts/4    00:00:07 path/to/python python foo.py

Le CMDvous montrera quels scripts python vous exécutez, bien qu'il ne vous donnera pas le répertoire du script.

blaklaybul
la source