Afficher les commandes complètes dans la sortie ps


16

Lors de l'exécution psavec l' -foption dans PuTTY (pour voir la commande correspondant à chaque processus), les lignes qui sont plus longues que la largeur du terminal ne sont pas entièrement visibles (elles ne sont pas enroulées sur plusieurs lignes).

Comment puis-je forcer le retour à la ligne pour que je puisse voir les commandes complètes (sur plusieurs lignes, si nécessaire) lors de l'exécution ps -f?


Pas une réponse, mais si je lance ps -f dans un émulateur de terminal rétréci, la sortie est enroulée sur plusieurs lignes. Quel terminal utilisez-vous?
MatthewRock

1
Cela pourrait être un doublon de: stackoverflow.com/questions/2159860/…
tommygun

@MatthewRock J'utilise PuTTy ici, pensez-vous que cela lui est spécifique?
sdabet

1
@Tonsenson ne peut pas se fermer en tant que doublon intersite.
muru

1
@fiddler ah, nous ne pouvons pas migrer d'anciennes questions sans intervention du modérateur, et même alors, ce n'est pas recommandé: meta.stackexchange.com/questions/8004/…
muru

Réponses:


15

Si vous avez une psimplémentation conforme à POSIX , vous pouvez essayer

ps -f | more

Notez que nous avons récemment changé le comportement et si vous avez une implémentation qui suit le problème POSIX 7 tc2, vous pouvez essayer:

ps -wwf | more

¹ Nous sommes les personnes qui ont des téléconférences hebdomadaires pour discuter de l'évolution du standard POSIX.


1
ps -wwffonctionne très bien.
sdabet

8

J'ai probablement trouvé la réponse à votre question sur Stack Overflow . Selon les mots de Dennis Williamson :

Il est probable que vous utilisiez un pager tel que less ou most car la sortie de ps aux est plus longue qu'un écran. Si c'est le cas, les options suivantes entraîneront (ou forceront) les longues lignes à boucler au lieu d'être tronquées.

ps aux | less -+S

ps aux | most -w Si vous utilisez l'une des commandes suivantes, les lignes ne seront pas encapsulées mais vous pouvez utiliser vos touches fléchées ou d'autres touches de déplacement pour faire défiler vers la gauche et la droite.

ps aux | less -S # utilisez les touches fléchées, ou Esc+ (et Esc+ ), ou Alt+ (et Alt+)

ps aux | most # utilisez les touches fléchées, ou <et >(On peut également utiliser l'onglet pour faire défiler vers la droite) Les lignes sont toujours encapsulées pour plus et pg.

Lorsque ps auxest utilisé dans un tube, l'option w n'est pas nécessaire car ps n'utilise la largeur d'écran que lorsque la sortie est vers le terminal.

(Remarque: cela s'applique à Linux non intégré, l' psutilitaire sur d'autres variantes Unix peut fonctionner différemment.)


@muru espère que cela va maintenant mieux. Merci d'avoir tout éclairci!
tommygun

Et désolé d'avoir causé le désordre.
MatthewRock

1
Votre réponse ne s'applique qu'à /usr/ucb/pset même avec ce programme, vous auriez besoin wwde /usr/ucb/pslimiter la largeur de sortie à 80 si la sortie est un tuyau. Pour le ps standard POSIX, voir ma réponse.
schily

1
@schily Cette réponse est parfaitement correcte pour la pscommande habituelle sur Linux non embarqué, ce que possède la majorité des lecteurs ici.
Gilles 'SO- arrête d'être méchant'

1
Mais l'OP n'a pas défini / linux comme balise.
schily

3

Il existe également une autre solution simple:

echo "$(ps afx)"

ou tout simplementps afx
nyxee

1
seul "ps fax" coupera après un certain nombre de caractères (je suppose que la longueur standard du terminal 72) la syntaxe d'écho "$ (votre commande)" est pour ne pas le couper
cinatic

Merci pour ça. Maintenant, la commande se comporte complètement différemment sur MacOS (j'entends son basé sur BSD) et Ubuntu ( Linux). Linux ne montre aucune différence quand vous l'utilisez echoou non. Mais, MAC OS X imprime autant que le terminal peut le montrer. J'utilise iTerm2et zsh. MAC n'autorise pas cette --foption.
nyxee


0

La commande pour MacOS est légèrement différente echo "$(ps aux)"


Vous ne voulez pas passer echoinutilement. Notez également que plusieurs autres réponses mentionnent déjà ps auxd'une manière ou d'une autre. Je suggérerais des commentaires ou des modifications sur ces réponses existantes pour souligner qu'elles sont bonnes pour MacOS (c'est ce que je suppose que vous vouliez dire).
Jeff Schaller

0

Ou vous pourriez faire

IFS='$';for line in $(ps axf); do echo $line; done

Je suis curieux, pourquoi êtes - vous définissez IFSà $?
AdminBee
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.