Le watch
commande est documentée comme suit :
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 partie sur le fait de donner la commande à sh -c
signifie le jobs
commande que vous exécutez via watch
s'exécute dans une session shell différente de celle qui a généré le travail, de sorte qu'il ne peut pas être vu que l'autre shell. Le problème est fondamentalement que jobs
est un shell intégré et doit être exécuté dans le shell qui a généré les travaux que vous souhaitez voir.
Le plus proche que vous pouvez obtenir est d'utiliser une boucle while dans le shell qui a généré le travail :
$ while true; do jobs; sleep 10; done
Vous pouvez définir une fonction dans votre script de démarrage du shell pour faciliter son utilisation :
myjobwatch() { while true; do jobs; sleep 5; done; }
Ensuite, il vous suffit de taper myjobwatch
.
Plutôt qu'une boucle, j'ai tendance à utiliser watch
avec un grep
pour mon travail en cours d'exécution, par exemple
watch 'ps u | grep rsync'
Pas parfait, mais mieux qu'une boucle while :)