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 :)