Wie kann ich gnu watch im Hintergrund laufen lassen?

1173
tobym

Wenn ich einen watchBefehl im Hintergrund starte, wird er gestoppt. Wenn Sie den Job in den Vordergrund bringen, wird er erneut ausgeführt. Ich möchte, dass dieser Job im Hintergrund ausgeführt wird.

$ watch ./do-something.sh & [1] 97673 [1]+ Stopped watch ./do-something.sh 

Ich gehe davon aus, dass dieser Job im Hintergrund läuft, aber es ist nicht so

$ bg 1 [1]+ watch ./hello.sh & [1]+ Stopped watch ./hello.sh 

Das macht auch nichts. Das Starten des Jobs im Vordergrund und das Bewegen im Hintergrund mit Strg-Z und das "Starten" mit bg 1funktioniert nicht.

Ist das ein "Feature" der Uhr? Ich möchte nur in regelmäßigen Abständen alle paar Sekunden etwas ausführen, und mir ist die Ausgabe nicht besonders wichtig. (cron ist dafür nicht das richtige Werkzeug, fwiw).

1

1 Antwort auf die Frage

2
grawity

Ich möchte nur in regelmäßigen Abständen alle paar Sekunden etwas ausführen, und mir ist die Ausgabe nicht besonders wichtig. (cron ist dafür nicht das richtige Werkzeug, fwiw).

Und auch nicht watch. Es ist für die interaktive Überwachung der Ausgabe eines Befehls konzipiert. Der Befehl wird nicht im Hintergrund ausgeführt, wenn das Terminal nicht wie jedes andere interaktive Programm gesteuert werden kann.

Versuchen Sie etwas Einfacheres:

while sleep 2; do ./do-something.sh; done & 

Oh, und Cron wäre das richtige Werkzeug, um das zu tun - das ist schließlich die einzige Aufgabe. Es gibt nur die Einschränkung, dass Jobs nicht mit zweiter Genauigkeit angegeben werden können.

Danke für den Tipp; das ist eine gute antwort. Ich habe auch stdout und stderr an / dev / null weitergeleitet, da mich die Ausgabe nicht interessierte. tobym vor 12 Jahren 0