web-dev-qa-db-fra.com

Comment obtenir le PID parent d'un processus donné sous GNU/Linux à partir d'une ligne de commande?

Résolu avant de poser la question suivante: cat /proc/1111/status | grep PPid

81
Vi.

Ligne de commande:

ps -o ppid= -p 1111

Une fonction:

ppid () { ps -p ${1:-$$} -o ppid=; }

Alias ​​(une fonction est préférable ):

alias ppid='ps -o ppid= -p'

Scénario:

#!/bin/sh
pid=$1
if [ -z $pid ]
then
    read -p "PID: " pid
fi
ps -p ${pid:-$$} -o ppid=

Si aucun PID n'est fourni à la fonction ou au script, le PPID du processus en cours est affiché par défaut.

Pour utiliser l'alias, un PID doit être fourni.

95

Le pid parent est dans la variable shell PPID, donc

echo $PPID
12
Ivan Novotny

C'est l'une de ces choses que j'apprends, oublie, réapprends, répète. Mais c'est utile. L’indicateur "s" de la commande pstree montre un arbre avec une feuille en N:

pstree -sA $(pgrep badblocks)
systemd---Sudo---mkfs.ext4---badblocks
12
user194394

Cette commande:

ps j

affichera les identifiants parents (PPID) de tous les processus.

Pour le processus unique, il suffit de passer le PID, tel que: ps j 1234.

Pour extraire uniquement la valeur, filtrez la sortie par awk, comme suit:

ps j 1234 | awk 'NR>1 {print $3}' # BSD ps
ps j 1234 | awk 'NR>1 {print $1}' # GNU ps

Pour lister les PID de tous les parents, utilisez alors pstree, comme:

$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)

Pour obtenir le PID parent du processus en cours, utilisez ensuite echo $$.

9
kenorb

Lisez/proc/$ PID/status. Peut être facilement scripté:

 #!/bin/sh 
 P = 1 $ 
 si [-z "$ P"]; alors 
 lit P 
 fi 
 cat/proc/"$ P"/status | grep PPid: | grep -o "[0-9] *" 
5
Vi.

Sous Linux:

ps hoppid $thatprocess
4
jthill
$ ps -p $(ps -p $(echo $$) -o ppid=) -o comm=
    tmux

Exemple un peu plus complexe qui vérifie la commande d'un parent qui a démarré le processus en cours Modifiez comm = en cmd = pour afficher la commande complète.

2
sebastian_t

Voici une solution rapide qui devrait également fonctionner:

ps $$
1
Gevork Palyan

Exécutez top avec les options de votre choix, telles que -u username and -p PID.

Et pendant que top fonctionne, appuyez sur f, il affiche une liste des options que vous souhaitez afficher dans la sortie top. Les paramètres affichés sont affichés en lettres majuscules et les paramètres affichés ou non en petites lettres.

Donc, en entrant la lettre avant le paramètre, vous pouvez l'activer ou le désactiver. Pour l'ID de processus parent, vous devez entrer b puis appuyez sur Enter, il affichera le PPID dans la sortie supérieure.

1
Praveen S.