Ligne de commande :
ps -o ppid= -p 1111
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, ils affichent par défaut le PPID du processus en cours.
Pour utiliser l'alias, un PID doit être fourni.
Pour imprimer les identifiants parents (PPID
) de tous les processus, utilisez cette commande :
ps j
Pour le processus unique, passez simplement le PID, comme :ps j 1234
.
Pour extraire uniquement la valeur, filtrez la sortie par awk
, comme :
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Pour répertorier les PID de tous les parents, utilisez pstree
(installez-le si vous ne l'avez pas) :
$ pstree -sg 1234
systemd(1)───sshd(1036)───bash(2383)───pstree(3007)
Pour obtenir le PID parent du processus en cours, utilisez echo $$
.
C'est une de ces choses que j'apprends, oublie, réapprends, répète. Mais c'est utile. Le drapeau "s" de la commande pstree affiche un arbre avec une feuille en N :
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks