Wie kann ich einen Befehl nach X Sekunden ohne Ruhezustand ausführen? Oder mit Schlaf, aber ohne die Shell, warten Sie einfach auf die Antwort dieses Befehls?
Ich habe das benutzt, aber es hat nicht funktioniert
sleep 5 ; ls > a.txt
Ich muss es im Hintergrund ausführen. Ich versuche, es nicht in einem Skript ausführen zu müssen, das ich ls
nach 5 Sekunden ausführen möchte, und die Shell wartet nicht nur auf das Ende des Ruhezustands
command-line
shell
sleep
Martin
quelle
quelle
;
?Antworten:
Eine prägnantere Schreibweise, die Hennes vorgeschlagen hat, ist
Alternativ können Sie auch verwenden, wenn Sie mehr als einige Sekunden benötigen
at
. Es gibt drei Möglichkeiten, einen Befehl zu erteilenat
:Pipe es:
Speichern Sie den Befehl, den Sie in einer Textdatei ausführen möchten, und übergeben Sie diese Datei an
at
:Sie können auch
at
Befehle von STDIN übergeben:Drücken Sie dann, CtrlDum die
at
Shell zu verlassen. Derls
Befehl wird in einer Minute ausgeführt.Sie können sehr genaue Zeiten im Format angeben
[[CC]YY]MMDDhhmm[.ss]
, wie inDadurch wird das Skript
script.sh
am 18. Dezember 2014 um 21:34 Uhr und 12 Sekunden ausgeführt. Theoretisch können Sie alsoat
in Zukunft fünf Sekunden ausführen. Das ist jedoch so, als würde man eine Fliege mit einem Panzer schlagen, und Hennes 'Vorschlag ist besser.quelle
$(sleep 5; echo foo) &
bin mir nicht sicher, warum ich dachte, ich brauche ein $ davor, aber mit falscher Syntax habe ich gerade die längere (und verständlichere) Version gepostet. (command_for_in_new_shell) ist allerdings kürzer.at
mit einer Verzögerung in Sekunden zu verwenden?at 21:43
) , wenn das ist , was Sie wollen, oder einfach nur etwas Einfaches tun wiesleep 4 && command
läuftcommand
nach 4 Sekunden.Sie können dies umgehen, indem Sie eine Shell oder ein Skript im Hintergrund starten.
Beispiel:
quelle