8
votes

Comment afficher l'arbre de processus actuel d'une session Bash?

J'aimerais créer un alias de bash qui me donne l'arborescence de processus de la session de Bash actuelle que j'utilise, jusqu'à INIT.

Le cas d'utilisation est de savoir si j'ai utilisé Bash ou VI 'S : shell commande.

J'utilise MacOS X. J'ai entendu parler de Pstree , mais il semble montrer que les enfants, pas la relation entre init et le processus actuel.


0 commentaires

5 Réponses :


1
votes

Si vous utilisez un gestionnaire de paquets comme MacPorts, vous pouvez facilement installer Pstere.


0 commentaires

7
votes

Je suis sûr avec un peu de recherche Google, vous pouvez trouver comment obtenir et télécharger pstree pour le Mac. Cependant, vous pouvez faire une version d'un homme pauvre, en utilisant ps et ppid .

par exemple xxx


5 commentaires

Peut-être que je me trompe, mais il semble que Pstree, ainsi que la version de votre pauvre homme, ne montre que les enfants d'un processus. Notez que je ne pouvais pas utiliser correctement votre version, car le PS est assez médiocre et ne prend pas en charge cmd . J'aimerais voir la relation entre init et le processus actuel. Toute proposition?


Il semble que OS X utilise commune au lieu de cmd dans la commande ps .


La version de l'homme pauvre obtient simplement tout le processus parent et leurs enfants ensemble. C'est tout.


La version du pauvre homme ne fonctionne plus sur Osx Mountain Lion.


Substitution cmd avec la commande pour certaines versions de la commande ps de BSD.



1
votes

Je n'ai pas toute la réponse que vous recherchez, mais j'ai une idée qui pourrait vous déplacer dans la bonne direction. La commande xxx pré>

créera un tableau associatif (un hachage, si vous parlez perl) p>

Vous aurez besoin d'une commande qui vous donnera des paires de noms pour PID et PPID ... Je suppose que la commande PS du Mac peut être apportée pour le faire si vous les torturer suffisamment. Je vais utiliser 'PS -eo' comme ci-dessus, mais vous voudrez remplir les blancs. P>

alors vous pouvez faire quelque chose comme ceci: P>

ps -eo pid,ppid | while read pid ppid
do   
   parent[$pid]=$ppid   
   echo "pid: $pid ppid: ${parent[$pid]} grandppid: ${parent[${parent[$pid]}]}"
done


0 commentaires

2
votes

J'ai utilisé Mac OS 10.7 Lion, mais je pense que cela sera assez portable pour les obus de Bourne ressemblant à des systèmes de type UNIX. Vous pouvez avoir des problèmes avec le mot-clé commande dans l'argument de PS.

i Mettez le code suivant dans un fichier nommé procsup.sh, qui définit une fonction shell pour suivre les parents du processus à traiter ID 1. (Je trouve souvent que Shell fonctionne plus facilement de fonctionner que des alias.) xxx

puis j'ai commencé une coquille et a acheté procsup.sh. Dans la vie réelle, vous veillerez à ce que vos nouveaux obus puissent provenir automatiquement procsup.sh lorsqu'ils ont commencé, peut-être dans votre personnelle .CASHRC. J'ai d'abord vérifié l'ascendance de cette coquille. Ensuite, j'ai commencé à VI de cette coquille. Comme d'habitude, l'interaction avec VI ne l'a pas fait à la transcription avant d'avoir fait : shell . Ma fenêtre du terminal ressemblait à ceci: xxx


0 commentaires

7
votes

Ceci est pris en charge dans pStree (1) code> à l'aide d'une option pour afficher l'arborescence uniquement pour un ordinateur portable particulier et fournir le PID du processus actuel ( $$ code> in Bash) L'option est nommée différemment entre la version sous licence GPL par Werner Almesberger distribuée avec Debian et la version BSD par Fred Hucht distribué avec MacOS.

  • sur Debian / Ubuntu: PSTREE -S $$ CODE> P>

    alias psme='pstree -p $$'
    


3 commentaires

Merci! Ceci est exactement ce que je cherchais! Et semble être une réponse meilleure et plus directe que celle acceptée - donnée a accès à pstree bien sûr.


Sur osx, j'ai Pstersee $ révision: 2.39 $ par Fred Hucht et ici l'option -s ne fonctionnait pas, mais l'option -p a fait : Pstere -P $$ .


merci@alexanderklimetschek j'ai mis à jour la réponse à afficher que -p est requis pour la version différente de Pstere distribué avec MacOS