Recientemente aprendí sobre watch , pero tengo problemas para que funcione con comandos relativamente sofisticados.
Por ejemplo, me gustaría solicitar watch
ejecutar el siguiente comando zsh
cada tres segundos * :
for x in `command_1 | grep keyword | cut -d' ' -f1`; do command_2 "word[word=number]" $x; done
Como puede ver, la línea anterior incluye comillas simples, comillas dobles, entre otros caracteres especiales.
Entonces intenté:
watch -n 3 "for x in `my_command | grep keyword | cut -d' ' -f1`; do command2 "rusage[mem=7000]" $x; done"
pero luego obtuve:
no se encontraron coincidencias para x in! @ # $ # ....; hecho
Probé otras combinaciones sin éxito. Aquí hay uno de esos intentos:
watch -n 3 "for x in $(bjobs -w | grep pre_seg | cut -d' ' -f1); do bmod -R "rusage[mem=7000]" $x; done"
que también da como resultado un error similar.
¿Alguna idea de cómo hacer que esto funcione?
* También me interesarían las soluciones que funcionan enbash
watch
no viene con las opciones-x
ni-c
en mi máquina. Lo busqué en línea y no he encontrado ninguna página de manual que los mencione. ¿Qué hacen estas opciones?-x
le dice quewatch
no pase el comando a través de un shell. Me acabo de enterar de que esto es específico de Debian / Ubuntu, a pesar de que no está indicado como tal. El-c
se pasa azsh
, no awatch
.-x
y-exec
existen en mywatch
(en gentoo), por lo que definitivamente no es específico de Debian. Tal vez lo comparaste con alguna otra versión dewatch
? El mío proviene del paquete procps .watch
proviene deprocps
Debian. La fuente oficial no tiene--exec
. El paquete en Debian (y derivados que incluyen Ubuntu) agrega la opción en un parche específico de Debian (watch_exec_beep.patch
; es el "parche de ejecución de Mortys watch" del error # 410967 ). Gentoo puede haber adoptado un parche similar.