Der watch Der Befehl ist wie folgt dokumentiert:
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.
Der Teil über das Geben des Befehls an sh -c bedeutet die jobs Befehl, den Sie über watch ausführen läuft in einer anderen Shell-Sitzung als derjenigen, die den Job hervorgebracht hat, sodass diese andere Shell nicht gesehen werden kann. Das Problem ist im Grunde, dass jobs ist eine eingebaute Shell und muss in der Shell ausgeführt werden, die die Jobs erzeugt hat, die Sie sehen möchten.
Das Beste, was Sie erreichen können, ist die Verwendung einer While-Schleife in der Shell, die den Job hervorgebracht hat:
$ while true; do jobs; sleep 10; done
Sie könnten eine Funktion in Ihrem Shell-Startskript definieren, um die Verwendung zu vereinfachen:
myjobwatch() { while true; do jobs; sleep 5; done; }
Dann müssen Sie nur noch myjobwatch eingeben .
Anstelle einer Schleife neige ich dazu, watch zu verwenden mit einem grep für meinen laufenden Job, zB
watch 'ps u | grep rsync'
Nicht perfekt, aber besser als eine While-Schleife :)