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
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.
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/
simple et parfait:
ps -efww
ne tronque pas la ligne
Il suffit de le jeter sur le chat, qui le coupe automatiquement
ps aux | cat
Passer quelques w
s ignorera la largeur d'affichage.
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]
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
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 :)
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.
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
.
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.