at / cron: Kommando zu einer bestimmten Uhrzeit

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
vogella
Beiträge: 243
Registriert: 22.06.2004 12:01:00
Wohnort: Heidelberg
Kontaktdaten:

at / cron: Kommando zu einer bestimmten Uhrzeit

Beitrag von vogella » 23.09.2004 00:17:34

Hallo,

kann wir jemand sagen, wie ich auf der Kommandozeile mit at ein Kommando zu einer bestimmten Uhrzeit laufen lassen kann. Die Manpage enthält leider keine Beispiele und meine Versuche sind bisher gescheitert.

Viele Grüße, Lars

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

crontab - cronjobs

Beitrag von Snoopy » 23.09.2004 02:01:03

hi

für die crontab - cronjobs

also grundlegend ist cron-job für immer wiederkehrende, at-job für einmalig ablaufende jobs, zuständig
beide starten beim boot und werden per daemon abgearbeitet

weiterhin gehe ich mal davon aus, dass du als user einen geplanten job machen möchtest

dabei sollte beachtet werden, das jeder user seine eigene crontab haben kann
es gibt eine system-crontab unter /etc/crontab, die sollte NICHT genutzt werden, noch nicht einmal von dem root-user
auch dieser "rechner-häuptling" sollte seine eigene benutzen

anzeigen der jeweiligen crontab erfolgt über

Code: Alles auswählen

crontab -l
damit werden alle geplanten jobs des benutzers angezeigt

das editieren der jeweiligen crontab erfolgt mit

Code: Alles auswählen

crontab -e
per vi-modus
eine leerzeile am ende sollte eingefügt und dann gespeichert werden

die einträge/jobs erfolgen (natürlich) zeitgesteuert
die zeit/datums-felder sind folgende (reihenfolge ist diesselbe wie sie eingetragen/gelesen werden):

1. minuten: 0-59
2. stunden: 0-23
3. tag des monats: 1-31
4. monat: 1-12 (namen gehen auch)
5. wochentag: (0 oder 7 ist sonntag ; namen gehen auch)

ein feld kann ein * sein, was immer für alles steht bzw erster / letzer
zahlenbereiche sind erlaubt, so ist das bsp. 9-13, dann wird der job um 9 - 10 - 11 - 12 - 13 uhr angestartet
9,11,12 bedeutet, dass der job um 9 - 11 - 12 uhr angestartet wird

beispiele

Code: Alles auswählen

5 1 * * * /usr/local/bin/backup.sh
bedeutet, dass um 5 minuten nach 1 uhr jeden tag das skript backup.sh laufen soll

Code: Alles auswählen

17 23 5,15,25 * * /usr/local/bin/backup.sh
bedeutet, dass um 17 minuten nach 23 uhr an jedem 5. - 15. - 25. des monats das skript backup.sh laufen soll

Code: Alles auswählen

25 0 * * 0-5 /usr/local/bin/backup.sh
bedeutet, dass um 25 minuten nach 0 uhr an jedem tag montags bisa freitags das skript backup.sh laufen soll

man sollte beachten, dass der aufrufende user auch die berechtigung hat das programm laufen zu lassen
Zuletzt geändert von Snoopy am 23.09.2004 05:52:03, insgesamt 1-mal geändert.

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

at-jobs

Beitrag von Snoopy » 23.09.2004 02:17:21

at-jobs habe ich bisher nur unter aix-unix angelegt, ich möchte hoffen, dass das dem linux ebenso entspricht
unter aix-gibt es auch allow und deny-files die user erlauben/sperren at-jobs anzulegen

mit at-jobs fasse ich mich etwas kürzer

at-jobs sind im gegensatz zu cron-jobs einmalige aufrufe von skripten/programmen

die kurz-syntax ist folgendermassen

Code: Alles auswählen

at [zeit [datum] kommando]
beispiele

Code: Alles auswählen

at 1800 /usr/local/bin/backup.sh
um 1800 uhr soll das skript backup.sh laufen

Code: Alles auswählen

at 1800 friday /usr/local/bin/backup.sh
um 1800 uhr am freitag soll das backup.sh laufen

die laufenden / geplanten at-jobs kann man mit

Code: Alles auswählen

at -l
einsehen

löschen kann man einen at-job mit

Code: Alles auswählen

at -r kommando

vogella
Beiträge: 243
Registriert: 22.06.2004 12:01:00
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von vogella » 23.09.2004 23:22:11

Hallo Snoopy,

danke für die ausführlichen Antworten.

Wenn ich Deinen Vorschlag für at ausprobiere, bekomme ich eine sonderbare Fehlermeldung:

at 1800 /usr/local/bin/backup.sh

Error in month number. Last token seen: /
Garbled time

Kannst Du damit was anfangen?

Viele Grüße, Lars

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Beitrag von Snoopy » 24.09.2004 02:23:45

upss....

ist mir da ein "freundscher vertippsler" unterlaufen ?

bitte teste folgende syntax

Code: Alles auswählen

at 18:00 /usr/local/bin/backup.sh
was zum testen auch gehen müsste ist

Code: Alles auswählen

at 18:00 <return>
echo "wieder ein test" <return>
^d (strg+d)
job root.1095983280.a at Fri Sep 24 18:00:00 2004
mit einem kannst du dir die liste der noch ausstehenden jobs anzeigen lassen

Code: Alles auswählen

atrm root.1095983280.a
löscht den job wenn er doch nicht benötigt wird

was man nicht vergessen sollte bei der ganzen geschichte, vorher mal ein absetzen, um die systemzeit zu erfahren, damit der at-job nicht ins nirvana oder auf den nächsten tag läuft ;)

vogella
Beiträge: 243
Registriert: 22.06.2004 12:01:00
Wohnort: Heidelberg
Kontaktdaten:

Beitrag von vogella » 24.09.2004 20:11:08

Hallo Snoppy,

danke für die Hilfe. Auch wenn das bei mir nicht ganz so geht, habe ich das durch deine Erklärung hinbekommen.

Das hier wirft eine Fehlermeldung:

at 20:10 ls
Only UTC timezone is supported. Last token seen: echo
Garbled time

Was allerdings geht ist:

echo ls | at 20:10

Vielen Dank, Lars

Antworten