at

at ist ein toller Befehl.

Cron ist unter Linux dafür zuständig, aufgaben – meist wiederkehrende – zu bestimmten Zeitpunkten auszuführen. At arbeitet mit cron zusammen und dient dazu, quasi AdHoc cron-Jobs anzulegen.

Will man z.B. heute Abend um acht Uhr automatisch seinen Computer herunterfahren lassen, könnte man (als root) folgendes eingeben:

/root/myfolder# at 8pm
warning: commands will be executed using /bin/sh
at> halt

(nun Strg+D drücken)

Da durch wird unter /var/spool/cron/atjobs eine Datei erzeugt die z.B. folgenden Inhalt hat:

#!/bin/sh
# atrun uid=0 gid=1003
# mail root 0
umask 22
USER=root; export USER
MAIL=/var/mail/root; export MAIL
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin; export PATH
PWD=/var/spool/cron/atjobs; export PWD
LANG=en_US.UTF-8; export LANG
PS1=\\h:\\w\\\$\ ; export PS1
SHLVL=1; export SHLVL
HOME=/root; export HOME
LOGNAME=root; export LOGNAME
OLDPWD=/root; export OLDPWD
cd /root/myfolder || {
echo 'Execution directory inaccessible' >&2
exit 1
}
halt

Wie man sieht, werden auch aktuelle Umgebungsvariablen beim anlegen des at-Jobs sowie das aktuelle Verzeichnis gespeichert und bei der verzögerten Ausführung des Befehls wiederhergestellt.

Die Angabe des Ausführungszeit für at ist so ausgelegt, dass man sie relativ leicht erlernen kann. Wenn sie auch zuerst etwas gewöhnungsbedürftig ist.

Konkrete Anwendung: Da hier die Internetverbindung sehr langsam ist, sind Downloads nur nachts möglich.

Dazu habe ich zuerst mit „at 8pm“ den Befehl wget eingerichtet um den Download abends zu starten. Außerdem habe ich mit „at 8 am + 1 day“ den Befehl „killall wget“ geplant, um bei Betriebsbeginn alle Downloads zu beenden, falls der Download über Nacht nicht beendet werden konnte.

UPDATE (danke an Bernd) : Obwohl der Pfad /var/spool/cron/atjobs dannach aussieht, als würde at cron-Jobs anlegen, so ist doch der Daemon „atd“ für die Ausführung zuständig. Hatte ich übersehen.

2 Gedanken zu „at

  1. Bernd

    Du schreibst: »At arbeitet mit cron zusammen«.

    Das stimmt so nicht. at nutzt den „atd“, ein eigener daemon, der bei manchen Distributionen erst installiert und/oder gestartet werden muss damit at funktioniert.

    Von cron ist das ganze komplett unabhängig.

    Dennoch ist at ein oft ziemlich unterbeachtetes Programm, das ich auch sehr gerne nutze. Auch gerne mal als Terminkalender:

    echo ‚Dran denken!‘ | mail -s ‚Termin: foo‘ bernd

    Das per at zum richigen Zeitpunkt ausgeführt, erinnert mich z.B. rechtzeitig an den Steuer-Kram.

    Antworten
  2. self Artikelautor

    Danke für den Kommentar. Ich frage mich nur gerade, was passiert eigentlich mit At-Jobs wenn der Rechner zu dem fraglichen Zeitpunkt nicht läuft?

    Das ist gerade bei der Steuererklärungserinnerung ja so ne Sache..

    Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.