En travaillant sur un script (Python) qui n'a pas d'importance ici, je suis tombé sur un comportement très étrange impliquant watch
et ps aux
, lorsque ce dernier est redirigé vers autre chose.
J'ai réussi à réduire le problème à une seule ligne. Lorsque vous exécutez
watch "ps aux | grep 'ps aux'"
dans un terminal, vous obtenez généralement plusieurs lignes de sortie, comme prévu.
Remarquez que les trois premières lignes sont coupées et correspondent tout juste à ps aux
à la fin. Lorsque vous réduisez la taille de votre terminal, la sortie est complètement coupée des résultats.
Cela signifie que grep ne reçoit que la sortie coupée. Ce qui me semble le plus déconcertant à ce sujet, c'est l'étendue extrêmement limitée pour laquelle cela se produit. Cela ne se produit pas pour l'une ou l'autre de
ps aux | grep "ps aux"
watch "ps u -C ps"
watch "ssh localhost 'ps aux | grep \"ps aux\"'"
Dans tous ces cas, la liste est renvoyée comme prévu.
Cela semble être le cas à la fois pour bash et sh, sur Ubuntu 15.04.
Alors que j'ai réussi à contourner ce problème dans mon script, est-ce que quelqu'un a une explication pour ce comportement?