Hallo,
wie kann ich einen Shell-Befehl auf die Sekunde genau starten. Nimmt at wirklich nur Minuten?
at 12:05:30
at 12:05.30
funktioniert beies nicht . In der manpage finde ich auch nichts zum Zeitformat. Geht at wirklich nicht mit Sekunden? Gibt es Alternativen, die sich genau so schnell und einfach von der Shell bedienen lassen?
Danke im Voraus,
Kermit
at - Programm auf die Sekunde genau starten
Re: at - Programm auf die Sekunde genau starten
Da gibt es noch die Option -t
Bei mir wird der Befehl aber auch immer zur vollen Minute ausgeführt, auch wenn ich die Sekunden nach dem Punkt angebe
Sollte demnach so funktionieren:-t time run the job at time, given in the format [[CC]YY]MMDDhhmm[.ss]
Code: Alles auswählen
at -t 07121007.30
Re: at - Programm auf die Sekunde genau starten
DU kannst ein sleep in dein Script basteln.
rot: Moderator wanne spricht, default: User wanne spricht.
Re: at - Programm auf die Sekunde genau starten
Historisch gesehen arbeitet at(1) schon immer nur (maximal) minutengenau. Man muss bedenken, dass at teilweise ueber cron(8) implementiert ist. Cron ist aber nunmal nur minutengenau, somit ist es at ebenfalls. Zudem kommen beide Programme aus einer Zeit als die Systeme keinesfalls sekundengenau reagieren konnten.
Die Option `-t' aendert nicht die Arbeitsweise von at, sondern nur die Syntax in der die Zeit eingegeben werden kann, von at's eigenem Format zu dem von touch(1).
Die Option `-t' aendert nicht die Arbeitsweise von at, sondern nur die Syntax in der die Zeit eingegeben werden kann, von at's eigenem Format zu dem von touch(1).
http://pubs.opengroup.org/onlinepubs/96 ... es/at.htmlThe -t time option was added as a new capability to support
an internationalized way of specifying a time for execution
of the submitted job.
Use ed once in a while!
Re: at - Programm auf die Sekunde genau starten
Eine Funktion für die bashrc:
Beispielaufruf:
Code: Alles auswählen
At(){
[ "$1" = "-h" ] && { echo "Startet ein einfaches Kommando zu einem date-kompatiblen Zeitpunkt. Syntax: At ZEITPUNKT KOMMANDO [ARGS]"; return; }
Seks=$(($(date -d "$1" +%s)-$(date +%s)))
shift
(( $Seks < 0 )) && { echo "Fehler: Zeitpunkt liegt in der Vergangenheit."; return; }
echo "Starte '$@' in $Seks Sekunden..."
sleep ${Seks}s && $@
}
Code: Alles auswählen
At 12:05:30 play Song.mp3