Réponses:
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.
=
signe n'est pas nécessaire, du moins sous OS X 10.8.2.
C'est l'une de ces choses que j'apprends, oublie, réapprends, répète. Mais c'est utile. Le drapeau 's' de la commande pstree montre un arbre avec une feuille en N:
pstree -sA $(pgrep badblocks)
systemd---sudo---mkfs.ext4---badblocks
Le pid parent est dans la variable shell PPID, donc
echo $PPID
$PPID
n’a fait que résoudre le problème que Google avait suggéré à cette page de répondre.
Pour imprimer les identifiants parents ( PPID
) de tous les processus, utilisez cette commande:
ps j
Pour le processus simple, il suffit de passer le PID, comme: ps j 1234
.
Pour extraire uniquement la valeur, filtrez la sortie awk
comme suit:
ps j | awk 'NR>1 {print $3}' # BSD ps
ps j | awk 'NR>1 {print $1}' # GNU ps
Pour lister 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 $$
.
pstree
est le plus beau que j'ai vu ici.
ps j
est génial car il est disponible sur de nombreuses distributions et est facilement composable
Lisez / proc / $ PID / status. Peut être facilement scripté:
#! / bin / sh P = 1 $ si [-z "$ P"]; ensuite lire P Fi cat / proc / "$ P" / status | grep PPid: | grep -o "[0-9] *"
grep '^PPid:' /proc/$1/status | grep -o '[0-9]*'
c'est tout ce dont vous avez besoin. (Il est très rare que les outils Unix fassent la if [ -z ]; then read
chose.)
echo $$ | ppid | ppid | ppid
< /some/file grep | grep | ...
.
grep /some/file
$ 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.
Voici une solution rapide qui devrait également fonctionner:
ps $$
Exécuter top
avec toutes les options que vous voulez, comme -u username and -p PID
.
Et pendant que vous top
appuyez sur f, vous obtenez une liste des options que vous souhaitez afficher en top
sortie. 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 bpuis appuyer sur Enter, le PPID s'affichera dans la sortie supérieure.
htop
vous pouvez configurer la PPID
colonne.
grep PPid status |cut -f2
comme danstime(for((i=0;i<1000;i++));do grep PPid status |cut -f2 >/dev/null;done)
; me demande s'il y a quelque chose d'encore plus rapide?