Lorsqu'un script est lancé à partir de l'invite de commandes, le shell génère un sous-processus pour ce script. Je veux montrer cette relation entre le processus de niveau terminal et ses enfants à l'aide ps
d'une sortie de style d'arbre.
Comment puis-je faire ceci?
Ce que j'ai essayé jusqu'à présent
fichier: script.sh
#!/bin/bash
ps -f -p$1
Ensuite, j'invoque le script à partir de la ligne de commande en passant l'ID de processus du shell du terminal:
$ ./script.sh $$
Ce que je veux c'est quelque chose comme ça
- processus shell de niveau supérieur (terminal)
- ./script.sh
- processus de
ps
commande lui-même
USER PID [..]
ubuntu 123 -bash
ubuntu 1234 \_ bash ./script.sh
ubuntu 12345 \_ ps auxf
ce que je reçois est:
PID TTY STAT TIME COMMAND
14492 pts/24 Ss 0:00 -bash
pstree
?pstree
et je n'ai pas réussi à produire une sortie significative, je pense que je n'ai paspstree $$
produitbash--pstree
exactement ce que je cherchais.ps
, qu'attendez-vous d'autre à partpstree
?pstree -p $$
? Ou, si vous voulez plus de la ligne de commande show,pstree -pa $$
. Ou, si vous voulez montrer tous les processus parents qui montent,pstree -psa $$
.Réponses:
Essayer
la source
$1
argument d'un script ou d'utiliser$$
pour regarder l'arbre commençant par le shell actuel ... Pouvez-vous mettre à jour votre réponse pour inclure des informations sur la façon de démarrer une forêt à partir de un processus spécifique?Je l'ai trouvé après avoir lu cette réponse de superutilisateur , en notant ce commentaire
et expérimenter
résultat
la source
OUTPUT MODIFIERS: f ASCII-art process hierarchy (forest)
Vous pouvez utiliser la commande
ps f -g <PID>
et statuer le processus racine pourPID
:la source
Essaye ça:
la source