web-dev-qa-db-fra.com

Visualisation complète de la commande PS

lorsque je lance la commande ps -aux sur mon serveur Linux, auquel je me suis connecté à l'aide de PuTTY, peu de processus sont trop longs pour tenir dans la largeur de la fenêtre actuelle. Y a-t-il une alternative?

-- Mise à jour --

Je suis désolé pour le déclassement, je pensais que les autres ne trouveraient pas la réponse utile aussi, alors j’ai dégradé.

Voici les informations que vous avez demandées.

hadoop-user@hadoop-desk:~$ echo $TERM
xterm

hadoop-user@hadoop-desk:~$ stty -a
speed 38400 baud; rows 47; columns 158; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

hadoop-user@hadoop-desk:~$ echo $COLUMNS
158
146
Boolean

Il est probable que vous utilisiez un téléavertisseur tel que less ou most puisque la sortie de ps aux est plus longue qu’un écran. Si tel est le cas, les options suivantes provoqueront (ou forceront) l'enroulement de longues lignes 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 les touches de direction ou d'autres touches de déplacement pour faire défiler l'écran à gauche et à droite.

ps aux | less -S    # use arrow keys, or Esc-( and Esc-), or Alt-( and Alt-) 

ps aux | most       # use arrow keys, or < and > (Tab can also be used to scroll right)

Les lignes sont toujours encapsulées pour more et pg.

Lorsque ps aux est utilisé dans un canal, l'option w n'est pas nécessaire, car ps utilise uniquement la largeur de l'écran lorsque la sortie est destinée au terminal.

125
Dennis Williamson

En utilisant les indicateurs auxww, vous verrez le chemin d'accès complet à la sortie dans la fenêtre de votre terminal et à partir des scripts Shell.

darragh@darraghserver ~ $uname -a
SunOS darraghserver 5.10 Generic_142901-13 i86pc i386 i86pc

darragh@darraghserver ~ $which ps
/usr/bin/ps<br>

darragh@darraghserver ~ $/usr/ucb/ps auxww | grep ps
darragh 13680  0.0  0.0 3872 3152 pts/1    O 14:39:32  0:00 /usr/ucb/ps -auxww
darragh 13681  0.0  0.0 1420  852 pts/1    S 14:39:32  0:00 grep ps

ps aux répertorie tous les processus exécutés par tous les utilisateurs. Voir man ps pour plus de détails. Le drapeau ww définit une largeur illimitée.

-w         Wide output. Use this option twice for unlimited width.
w          Wide output. Use this option twice for unlimited width.

J'ai trouvé la réponse sur le blog suivant:
http://www.snowfrog.net/2010/06/10/solaris-ps-output-truncated-at-80-columns/

133
darraghmurphy

simple et parfait:

ps -efww

ne tronque pas la ligne

98
theDolphin

Il suffit de le jeter sur le chat, qui le coupe automatiquement

ps aux | cat
51
yoki

Passer quelques ws ignorera la largeur d'affichage.

14

Si vous spécifiez manuellement le format de sortie, vous devez également vous assurer que l'option args figure dernier dans la liste des champs de sortie, sinon elle sera tronquée.

ps -A -o args,pid,lstart donne

/usr/lib/postgresql/9.5/bin 29900 Thu May 11 10:41:59 2017
postgres: checkpointer proc 29902 Thu May 11 10:41:59 2017
postgres: writer process    29903 Thu May 11 10:41:59 2017
postgres: wal writer proces 29904 Thu May 11 10:41:59 2017
postgres: autovacuum launch 29905 Thu May 11 10:41:59 2017
postgres: stats collector p 29906 Thu May 11 10:41:59 2017
[kworker/2:0]               30188 Fri May 12 09:20:17 2017
/usr/lib/upower/upowerd     30651 Mon May  8 09:57:58 2017
/usr/sbin/Apache2 -k start  31288 Fri May 12 07:35:01 2017
/usr/sbin/Apache2 -k start  31289 Fri May 12 07:35:01 2017
/sbin/rpc.statd --no-notify 31635 Mon May  8 09:49:12 2017
/sbin/rpcbind -f -w         31637 Mon May  8 09:49:12 2017
[nfsiod]                    31645 Mon May  8 09:49:12 2017
[kworker/1:0]               31801 Fri May 12 09:49:15 2017
[kworker/u16:0]             32658 Fri May 12 11:00:51 2017

mais ps -A -o pid,lstart,args vous obtient la ligne de commande complète:

29900 Thu May 11 10:41:59 2017 /usr/lib/postgresql/9.5/bin/postgres -D /tmp/4493-d849-dc76-9215 -p 38103
29902 Thu May 11 10:41:59 2017 postgres: checkpointer process   
29903 Thu May 11 10:41:59 2017 postgres: writer process   
29904 Thu May 11 10:41:59 2017 postgres: wal writer process   
29905 Thu May 11 10:41:59 2017 postgres: autovacuum launcher process   
29906 Thu May 11 10:41:59 2017 postgres: stats collector process   
30188 Fri May 12 09:20:17 2017 [kworker/2:0]
30651 Mon May  8 09:57:58 2017 /usr/lib/upower/upowerd
31288 Fri May 12 07:35:01 2017 /usr/sbin/Apache2 -k start
31289 Fri May 12 07:35:01 2017 /usr/sbin/Apache2 -k start
31635 Mon May  8 09:49:12 2017 /sbin/rpc.statd --no-notify
31637 Mon May  8 09:49:12 2017 /sbin/rpcbind -f -w
31645 Mon May  8 09:49:12 2017 [nfsiod]
31801 Fri May 12 09:49:15 2017 [kworker/1:0]
32658 Fri May 12 11:00:51 2017 [kworker/u16:0]
8
dshepherd

vous pouvez définir le format de sortie, par exemple pour ne voir que la commande et l'identifiant du processus.

ps -eo pid,args

voir la page de manuel de ps pour plus de formats de sortie. Vous pouvez également utiliser les options -w ou --width n.

Si tout échoue, voici une autre solution de contournement, (juste pour voir vos longues cmds)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],$0 }' /proc/[0-9]*/cmdline
7
ghostdog74

Désolé d'être en retard à la fête, mais je viens de trouver cette solution au problème.

Les lignes sont tronquées car ps insiste pour utiliser la valeur de $ COLUMNS, même si la sortie n'est pas l'écran à ce moment. Ce qui est un bug, à mon humble avis. Mais il est facile de contourner le problème, il suffit de faire croire à ps que vous avez un écran super large, c’est-à-dire que COLUMNS est élevé pour la durée de la commande ps. Un exemple:

$ ps -edalf                 # truncates lines to screen width
$ COLUMNS=1000 ps -edalf    # wraps lines regardless of screen width

J'espère que cela est toujours utile à quelqu'un. Toutes les autres idées semblaient beaucoup trop compliquées :)

3
user1932577

Si aucune des solutions ci-dessus ne fonctionne, la sortie de ps n'est pas votre problème. Peut-être devez-vous régler PuTTY sur boucler les longues lignes ?

Sinon, nous avons besoin de plus d'informations.

1
Alok Singhal

Si vous grep la commande que vous recherchez avec un tube de ps aux, le texte sera automatiquement mis à la ligne. J'ai utilisé beaucoup d'autres réponses ici, mais parfois si vous recherchez quelque chose de spécifique, il est agréable d'utiliser simplement grep et vous savez que les lignes seront bouclées.

Par exemple ps aux | grep ffmpeg.

1
carterh062

J'ai trouvé cette réponse qui est ce qui l'a cloué pour moi car aucune des réponses ci-dessus n'a fonctionné

https://unix.stackexchange.com/questions/91561/ps-full-command-is-too-long

Fondamentalement, le noyau limite ma ligne de commande.

1
Dean Hiller