Im Gegensatz zu cron führt at ein Befehl/Script nur einmal zu einer vordefinierten Zeit aus. At kann, wenn denn erlaubt, von jedem Benutzer verwendet werden. Was nicht verwechselt werden sollte: Der Deamon heisst „atd“, während das Programm mit „at“ aufgerufen wird.
Bei den meisten Linux-Distributionen läuft der Deamon nicht, kann aber einfach mit
/etc/init.d/atd start
gestartet werden.
Folgende Dateien gehören zu at/atd:
/var/spool/cron/atjobs /var/spool/cron/atspool /proc/loadavg /var/run/utmp /etc/at.allow /etc/at.deny
Der Deamon nimmt Aufträge im interaktiven Modus oder als Textdatei entgegen. Die Zeitangaben sind hierbei sehr vielfältig, wie die folgenden Beispiele zeigen.
Als erstes starten wir Morgen um 15:00Uhr zwei Scripte und übergeben „atd“ die nötigen Informationen mit Hilfe des Interaktiven Modus.
blog@X201:~$ at 15:00 tomorrow warning: commands will be executed using /bin/sh at> /home/blog/testscript.sh at> /home/blog/cleanup.sh at> <EOT> job 1 at Wed Apr 22 15:00:00 2015
Der Eintrag <EOT> steht für „End Of Transmission“ und wurde durch das Drücken von „Strg + D“ vom Benutzer erzeugt. Also nicht „<EOT>“ eintippen.
Wenn viele Kommandos gestartet werden sollen, können diese in einer Textdatei an „atd“ übergeben werden. Die Datei mit den Kommandos heisst bei diesem Beispiel „kommando.txt“.
blog@X201:~$ at -f kommando.txt teatime tomorrow warning: commands will be executed using /bin/sh job 2 at Wed Apr 22 16:00:00 2015
Die Zeitangabe „teatime“ bedeutet hier „16:00Uhr“.
An der LPIC-Prüfung wird man sicher versuchen, mit anscheinend unrealistischen Zeitplänen Unsicherheit zu verbreiten.
at-Warteschlange
Mit dem Befehl „atq“ wird die aktuelle Warteschlange („q“ steht für „queue“) angezeigt. Alternativ kann eine zweite Variante verwendet werden: „at -l“ („l“ steht hier für list“).
blog@X201:~$ at -l 1 Wed Apr 22 15:00:00 2015 a blog 2 Wed Apr 22 16:00:00 2015 a blog
Berechtigungen
Die Authorisierungs-Dateien für at liegen direkt im Verzeichnis /etc. Folgendes sollte beachtet werden:
- at.allow – sobald diese Datei existiert, dürfen nur Benutzer at nutzen, die darin gelistet sind.
- at.deny – wenn diese Datei exisitert, jedoch keine at.allow, dann dürfen alle Benutzer cron verwenden die nicht hier gelistet sind.
- Existiert weder eine at.allow noch eine at.deny, darf nur der Benutzer root at verwenden. Eine leere at.deny ermöglicht den Zugriff für alle Benutzer.
ACHTUNG: Hier unterscheidet sich das Verhalten zu „cron“ – bei cron dürfen bei fehlender cron.allow und cron.deny alle Benutzer den Dienst verwenden.