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. P>
Le cas d'utilisation est de savoir si j'ai utilisé J'utilise MacOS X. J'ai entendu parler de Bash code> ou
VI code> 'S
: shell code> commande. p>
Pstree code>, mais il semble montrer que les enfants, pas la relation entre init et le processus actuel. P>
5 Réponses :
Si vous utilisez un gestionnaire de paquets comme MacPorts, vous pouvez facilement installer Pstere. P>
Je suis sûr avec un peu de recherche Google, vous pouvez trouver comment obtenir et télécharger par exemple p> pstree code> pour le Mac. Cependant, vous pouvez faire une version d'un homme pauvre, en utilisant
ps code> et
ppid code>.
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 ps> est assez médiocre et ne prend pas en charge
cmd code>. J'aimerais voir la relation entre init et le processus actuel. Toute proposition?
Il semble que OS X utilise commune code> au lieu de
cmd code> dans la commande
ps code>.
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 code> avec la commande
code> pour certaines versions de la commande
ps code> de BSD.
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 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
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 em> 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.) P> 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 code>. Ma fenêtre du terminal ressemblait à ceci: p>
Ceci est pris en charge dans sur Debian / Ubuntu: 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.
PSTREE -S $$ CODE> P>
alias psme='pstree -p $$'
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 code> bien sûr.
Sur osx, j'ai Pstersee $ révision: 2.39 $ par Fred Hucht Code> et ici l'option
-s code> ne fonctionnait pas, mais l'option
-p code> a fait :
Pstere -P $$ code>.
merci@alexanderklimetschek j'ai mis à jour la réponse à afficher que -p code> est requis pour la version différente de Pstere distribué avec MacOS