Vous pouvez également gérer ps
un peu mieux la sortie.
ps --width ${n:-$COLUMNS} ${opts} #set ps terminal width
ps -ww ${opts} #no word wrap
ps -o ${only_interesting_output} ${opts} #trim output
Cela indiquera ps
d'analyser sa sortie selon vos spécifications si nécessaire.
Bien sûr, si vous ne faites pas de retour à la ligne, vous avez le problème de manquer d'informations. Avez-vous vraiment besoin de tout cela pour tous les processus? Ouvrez-le dans un pager si c'est le cas:
ps ww ${opts} | $PAGER
Sinon, spécifiez ce que vous voulez voir:
ps -o args= -p $pid
Alternativement, vous pouvez explicitement informer ps
de votre terminal --width
:
man ps
...
w
Large sortie. Utilisez cette option deux fois pour une largeur illimitée.
-w
Large sortie. Utilisez cette option deux fois pour une largeur illimitée.
--width n
Définissez la largeur de l'écran.
La --width
chose fonctionne exactement selon les spécifications demandées sans avoir à impliquer de filtres supplémentaires ou de processus auxiliaires (ce qui ne fera qu'encombrer -aux
encore plus votre sortie). Et $COLUMNS
comme indiqué ci-dessus et comme le souligne Stéphane, cela fonctionnera même de manière dynamique.
Il est probablement intéressant de noter, cependant, que je trouve des gens essaient souvent d'ajouter ces types de filtres inutiles afin qu'ils puissent accueillir un |pipe
par un autre filtre à la sortie parse qui est aussi très susceptible d'être inutile. Bien sûr, par les gens, je veux surtout dire moi.
L' -o
opérande utput que je mentionne ci-dessus vous permet de filtrer les colonnes à ps
afficher, et lorsque vous ajoutez l' =
assignation, vous pouvez même nommer la colonne à votre guise. Je laisse l'affectation vide et lui -p
remets un processus cible $pid
afin que la seule sortie du ps
tout soit le $pid
nom de la commande et son args
à l'invocation. Et -o
gratte à peine la surface de la façon dont vous pouvez définir ce ps
qui sera affiché ou non. C'est la direction que je vous recommanderais de prendre, notamment via:
man ps
...
Pour voir tous les processus du système à l'aide de la syntaxe BSD:
ps ax
ps axu
Pour imprimer un arbre de processus:
ps -ejH
ps axjf
Pour obtenir des informations sur les threads:
ps -eLf
ps axms
Pour obtenir des informations sur la sécurité:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Pour voir chaque processus exécuté en tant que root (ID réel et efficace) au format utilisateur:
ps -U root -u root u
Pour voir chaque processus avec un format défini par l'utilisateur:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Imprimez uniquement les ID de processus de syslogd:
ps -C syslogd -o pid=
N'imprimez que le nom du PID 42:
ps -p 42 -o comm=