'at' Befehl beabsichtigtes Verhalten? Starten der einzelnen Befehle anstelle der Planung

7

Ich versuche, die Ausführung einiger Programme zu planen. Ich benutze diesen Befehl:

./tests.o | at 15:00&

Wenn ich es richtig verstanden habe, war das beabsichtigte Verhalten, die Ausführung bis 15:00 Uhr zu verzögern. Wenn ich jedoch ausgeführt werde top, sobald ich den obigen Befehl starte, sehe ich bereits tests.o, der CPU-Zeit verbraucht.

Da ich mehrere Tests für gemeinsam genutzte Ressourcen starten muss, frage ich mich, wie ich "at" richtig verwenden soll.

Was mache ich falsch?

Mick Hardins
quelle
1
Diese Syntax (mit Ausnahme derjenigen, &die nicht benötigt wird) ist richtig, wenn ./tests.odie Befehle, die Sie um 15:00 Uhr ausführen möchten, generiert (auf die Standardausgabe gedruckt) werden.
Kamil Maciorowski

Antworten:

10

atliest Befehle von der Standardeingabe. Was Sie tun, ist das Ausführen ./tests.ound Zuführen der Ausgabezeichenfolge (n) als Befehl (e) atzum Planen. Außerdem ist das Trailing nicht erforderlich &, da es atsofort zurückkehrt.

Was Sie brauchen ist:

echo ./tests.o | at 15:00

oder:

at 15:00 <<< ./tests.o

Sie müssen Anführungszeichen verwenden, wenn der geplante Befehl die Umleitung oder andere Shell-Funktionen verwenden soll, z.

at 15:00 <<< './tests.o > tests.log'
AFH
quelle
Danke, jetzt sehe ich, was ich falsch gemacht habe. @KamilMaciorowski danke für deine Klarstellung.
Mick Hardins
@KamilMaciorowski - Ich kreuze oft mit anderen Antworten und Kommentaren, da mir häufig klar wird, dass es Dinge gibt, die ich überprüfen sollte, während ich meine Antwort schreibe. Ich erinnere mich nicht immer daran, es zu überprüfen, bevor ich etwas poste. Tut mir leid, dass ich Sie auf dem Postweg gepippt habe.
AFH
Ein Here-Dokument ist eine weitere bequeme Möglichkeit, mit Shell-Metazeichen im Befehl umzugehen.
Barmar
@Barmar - Ich habe in meiner Antwort eine Here-Zeichenfolge verwendet, und dies war die richtige Antwort für das in der Frage aufgeworfene Problem, aber natürlich wäre ein Here-Dokument angemessen, wenn mehr als ein Befehl gleichzeitig geplant werden sollte. Ich würde es nicht für einen einzelnen Befehl verwenden, um ein Zitieren zu vermeiden.
AFH
Ich kritisiere nicht, sondern erwähne nur eine Alternative, die etwas besser verallgemeinert.
Barmar