2 votes

La modification de la taille du terminal affecte la sortie de grep à l'intérieur d'une commande watch.

Si je lance une commande comme :

watch "ps -ef | grep '^foo.*bar'"

et la ligne de sortie correspondante de ps -ef est une longue ligne comme

foo <lots and lots of text here> bar

la taille du terminal influe sur la sortie de cette ligne. Par exemple, si le terminal est en plein écran et que cette ligne tient sur l'écran, la sortie sera affichée dans watch. Cependant, si je redimensionne la fenêtre à la moitié de la taille de l'écran afin que la barre soit tronquée de l'écran, la ligne grep disparaît complètement (probablement la ligne est tronquée avant qu'elle n'atteigne grep dans le pipeline). C'est un problème parce que j'essaie d'extraire une partie de cette ligne pour l'utiliser plus tard dans le pipeline.

Existe-t-il une solution pour éviter que la taille du terminal n'affecte la sortie de grep dans une commande watch ?

3voto

James Mertz Points 390

Ce n'est pas grep , c'est ps . Ajouter le -ww options ( ps -efww ) pour lui demander de toujours produire des lignes complètes.

2voto

Unnati Gutpa Points 11

Je ne sais pas ce que le droit l'est, mais cela semble régler le problème,

watch "COLUMNS=160 ps -ef | grep '^foo.*bar'"

au prix d'un pliage des lignes du ps. Modifiez "160" pour qu'il soit suffisamment long pour la plus longue ligne "foo.*bar" que vous vous attendez à voir.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X