Il watch
comando è documentato come segue:
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 su come dare il comando a sh -c
indica il jobs
comando che stai eseguendo tramite watch
è in esecuzione in una sessione di shell diversa da quella che ha generato il lavoro, quindi non può essere vista dall'altra shell. Il problema è fondamentalmente che jobs
è una shell incorporata e deve essere eseguita nella shell che ha generato i lavori che vuoi vedere.
Il massimo che puoi ottenere è usare un ciclo while nella shell che ha generato il lavoro:
$ while true; do jobs; sleep 10; done
Potresti definire una funzione nel tuo script di avvio della shell per renderlo più facile da usare:
myjobwatch() { while true; do jobs; sleep 5; done; }
Quindi devi solo digitare myjobwatch
.
Piuttosto che un loop, tendo ad usare watch
con un grep
per il mio lavoro in esecuzione, ad esempio
watch 'ps u | grep rsync'
Non perfetto, ma meglio di un ciclo while :)