Affichage de la pleine sortie de la commande PS

lorsque j'exécute la commande ps -aux sur mon serveur linux, auquel je me suis connecté en utilisant putty, peu de processus sont trop longs pour s'adapter à la largeur de ma fenêtre actuelle. Est-il une alternative?

-- Update --

je suis désolé pour le déclassement,j'ai pensé que d'autres ne trouveront pas la réponse utile aussi, donc j'ai déclassé.

Voici l'info que vous avez demandé.

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
118
demandé sur Tshepang 2010-01-29 07:23:15

11 réponses

il est probable que vous utilisez un pager tel que less ou most car la sortie de ps aux est plus longue qu'une screenful. Si c'est le cas, les options suivantes causeront (ou forceront) les longues lignes à s'enrouler 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 emballées mais vous pouvez utiliser vos touches fléchées ou d'autres touches de déplacement pour faire défiler à 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)
Lignes

sont toujours emballés pour more et pg .

lorsque ps aux est utilisé dans un tuyau, l'option w n'est pas nécessaire puisque ps n'utilise la largeur de l'écran que lorsque la sortie est vers le terminal.

104
répondu Dennis Williamson 2010-01-29 06:21:37

en utilisant les options auxww , vous verrez le chemin complet vers la sortie à la fois dans votre fenêtre de 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 liste tous les processus exécutés par tous les utilisateurs. Voir man ps pour plus de détails. Le drapeau ww fixe 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 /

110
répondu darraghmurphy 2016-06-02 22:13:48

simple et parfait:

ps -efww

de ne pas tronquer la ligne

78
répondu theDolphin 2013-07-29 19:48:12

il suffit de le jeter sur cat, quelle ligne-wraps automatiquement

ps aux | cat
34
répondu yoki 2014-11-04 18:42:28

passer quelques w s ignorera la largeur de l'affichage.

13
répondu Ignacio Vazquez-Abrams 2010-01-29 04:25:48

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

ps -eo pid,args

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

si tout le reste échoue, voici une autre solution, (juste pour voir vos longs cmds)

awk '{ split(FILENAME,f,"/") ; printf "%s: %s\n", f[3],"151910920" }' /proc/[0-9]*/cmdline
7
répondu ghostdog74 2010-01-29 04:55:39

si vous spécifiez manuellement le format de sortie, vous devez aussi vous assurer que l'option args est 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]
4
répondu dshepherd 2017-05-12 10:12:16

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

les lignes sont tronquées parce que ps insiste sur l'utilisation de 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 facile à contourner, il suffit de faire ps pense que vous avez un écran superwide, i.e. définir des colonnes élevées 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 c'est encore utile pour quelqu'un. Tous les d'autres idées semblaient beaucoup trop compliquées:)

3
répondu user1932577 2012-12-27 16:26:11

si vous grep la commande que vous recherchez avec un tuyau de ps aux, il enveloppera le texte automatiquement. J'ai utilisé beaucoup d'autres réponses ici, mais parfois, si vous cherchez quelque chose de précis, il est agréable à utiliser grep et vous savez qu'il sera de retour à la ligne.

par exemple ps aux | grep ffmpeg .

1
répondu carterh062 2016-05-13 14:34:26

Si aucune des solutions ci-dessus ne fonctionne, la sortie de ps n'est pas votre problème. Peut-être que vous avez besoin de mettre putty à wrap long lines ?

sinon, nous avons besoin de plus d'informations.

0
répondu Alok Singhal 2010-01-29 04:53:34

j'ai trouvé cette réponse, qui est ce qui a cloué pour moi comme aucune des réponses ci-dessus, travaillé

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

en gros, le noyau limite ma ligne cmd.

0
répondu Dean Hiller 2017-04-13 12:36:31