At (Unix)

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten




at ist in der Informatik ein Unix-Befehl, der, vergleichbar mit der Funktion cron, eine zeitgesteuerte, allerdings einmalige Ausführung eines Befehls oder eines Skriptes ermöglicht.


Funktion

Es können mehrere Befehle in die Liste von at aufgenommen werden, um sie später ausführen zu lassen. Diese Befehle in der Liste werden Jobs genannt.
Der folgende Code kompiliert um 13:37 Uhr dieses Tages eine Datei zu einer ausführbaren Datei. Wenn die Uhrzeit bereits überschritten wurde, wird der Befehl am nächsten Tag ausgeführt.

 echo "cc -o foo foo.c" | at 13:37

at kennt auch zahlreiche weitere Zeitangaben wie z. B. midnight, teatime, noon, tomorrow, usw.

Eine Variante von at ist batch, hier wird keine Ausführungszeit übergeben. Ein mit batch übergebener Job startet dann, wenn der Load der Maschine unter einen Schwellwert (standardmäßig 1,5) fällt. Mit diesem Mechanismus kann eine gleichmäßigere Auslastung einer Maschine erreicht werden.

Es gibt verschiedene Implementationen. at arbeitet normalerweise mit dem cron-Daemon zusammen, der die Aufträge zum passenden Zeitpunkt ausführt, andere Implementationen benutzen einen Daemon namens atd, der im Hintergrund läuft, in regelmäßigen Zeitabständen die Liste der Aufträge überprüft und sie zum passenden Zeitpunkt ausführt.

Mit dem Befehl atq lassen sich die eigenen Jobs anzeigen, die mit at hinzugefügt worden sind. Sofern man als root eingeloggt ist, werden die Jobs von allen Usern des Systems angezeigt. Mit dem Befehl atrm lassen sich Jobs wiederum aus der Queue entfernen.

Geschichte

at erschien erstmals in Unix Version 7 im Jahr 1979, es ist heute Bestandteil der cron-Implementierungen. Eine Variante von at wurde 1993 von Thomas König entwickelt und unter die GNU General Public License gestellt.

Andere Betriebssysteme

Unter Windows NT/2000/XP steht at auch zur Verfügung, dort ist dieser Befehl jedoch mittlerweile veraltet. Stattdessen sollte der Taskplaner benutzt werden.