Ejecutar
watch "COLUMNS= ps aux | grep TheProcessYouWatch"
Explicación:watch
establece ciertas variables de entorno adicionales, a saber, COLUMNS
y LINES
. Esto se puede verificar fácilmente comparando env | grep COLUMNS
y watch 'env | grep COLUMNS'
.
Cuando COLUMNS
está configurado, ps
trunca su salida a esa cantidad de caracteres en una línea, incluso si la salida se canaliza a grep
(O algo más). (ps
, ¿Por qué me haces esto?). Forzando COLUMNS
estar vacío dentro de watch
El comando de es suficiente para hacer ps
funciona como OP (y yo) esperaba.
Por cierto, para evitar watch
y grep
los procesos son parte de su salida observada, considere agregar []
así:
watch "COLUMNS= ps aux | grep [T]heProcessYouWatch"
(Por supuesto, recomendaría familiarizarse con pgrep
también. Otras respuestas serán útiles con esto).
Como se menciona en la edición de preguntas y la respuesta de xzfc, el problema parece estar relacionado con el ajuste de línea de tmux. Para algo más cercano a un reemplazo directo de ps aux | grep [q]uote
, si no necesita información de usuario, intente:
$ pgrep -af [q]uote
392 bash -c sleep 5 && echo quote
399 bash -c sleep 5 && echo second quote
$ watch pgrep -af [q]uote
El -a
flag hace que la salida incluya los argumentos de la línea de comandos, mientras que -f
le permite buscar los argumentos de la línea de comando, así como solo el nombre del proceso.
ps
es una utilidad que produce resultados legibles por humanos, y confiar en grepping texto legible por humanos es una mala idea. Deberías usar pgrep myShittyProcess
en lugar de ps aux | grep myShittyProcess
. pgrep
produce una lista simple de pids, y si desea una salida menos aburrida, puede pasar pgrep
salida de ps
:
ps -opid,user,args -p `pgrep myShittyProcess`
Para usar esa frase con watch
debe encerrarlo en ' '
(no " "
) para evitar la sustitución anticipada de comandos de shell:
watch 'ps -opid,user,args -p `pgrep myShittyProcess`'