El watch
El comando se documenta de la siguiente manera:
SYNOPSIS
watch [-dhvt] [-n <seconds>] [--differences[=cumulative]] [--help]
[--interval=<sec-onds>] [--no-title] [--version] <command>
[...]
NOTE
Note that command is given to "sh -c" which means that you may need to
use extra quoting to get the desired effect.
La parte sobre dar el comando a sh -c
significa el jobs
comando que está ejecutando a través de watch
se está ejecutando en una sesión de shell diferente a la que generó el trabajo, por lo que no se puede ver ese otro shell. El problema es fundamentalmente que jobs
es un shell integrado y debe ejecutarse en el shell que generó los trabajos que desea ver.
Lo más cerca que puede estar es usar un bucle while en el shell que generó el trabajo:
$ while true; do jobs; sleep 10; done
Puede definir una función en su secuencia de comandos de inicio de shell para que sea más fácil de usar:
myjobwatch() { while true; do jobs; sleep 5; done; }
Luego solo tienes que escribir myjobwatch
.
En lugar de un bucle, tiendo a usar watch
con un grep
para mi trabajo en ejecución, por ejemplo
watch 'ps u | grep rsync'
No es perfecto, pero es mejor que un ciclo while :)