| This content in english |

Debian - crontab - Kommandos automatisch ausführen lassen

Problem

Auf einem Windows Server 2003 läuft unter VMWare ein Debian-Mailserver als Relay. Der Windows-Server wird regelmäßig neu gestartet, damit das Debian-System ebenfalls.

Leider 'verliert' das Debian-System immer wieder unter VMWare die Berechtigungen für /var/log/clamav. Dadurch können clamav-daemon und clamav-freshclam die Logdateien nicht verwenden und auch nicht rotieren lassen (neue anlegen). Der Fehler tritt auch bei vCenter Server auf. Verwendet habe ich Debian Lenny, Debian Squeeze. Dass der Fehler auftritt und das System stört, kann ich nur ändern, wenn ich in der Konsole diese Kommandos eingebe:

# chown -R amavis:amavis /var/log/clamav/*
# /etc/init.d/clamav-daemon restart
# /etc/init.d/clamav-freshclam restart

Wenn ich nachgesehen habe, stehen gleich nachdem der Dienst neu gestartet wurde plötzlich wieder etliche Einträge in der betreffenden Log-Datei. Der Fehler scheint aufzutreten, wenn das System die Log-Datei rotieren will.

Ziel

Das Debian-System soll diese Kommandos täglich selbständig ausführen.

Lösung

In /etc/crontab habe ich einige Zeilen hinzugefügt. Nach den Sternen habe ich angegeben, welcher Benutzer das Kommando ausführt.

Das System soll in diesem Beispiel täglich um 07:01, 07:03 und 07:05 Uhr die verschiedenen Kommandos ausführen. Die Ergebnisse kann man in /var/log/syslog sehen. Zum Bearbeiten habe ich 'mc' oder 'nano' verwendet.

/etc/crontab

# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
# Kommandos, damit clamav-freshclam und clamav-daemon wieder die Log-Datei nutzen koennen.
1 7 * * * root chown -R amavis:amavis /var/log/clamav/*
3 7 * * * root /etc/init.d/clamav-daemon restart
5 7 * * * root /etc/init.d/clamav-freshclam restart

Kurze Beschreibung von /etc/crontab

Die Sterne stehen von links nach rechts für Minute(0-59) Stunde(0-23) Tag(0-31) Monat(0-12) Wochentag(0-7)

Nicht nur 5 Sterne und ein Kommando setzen!

Beispiele

Der Computer soll täglich um 02:30 Uhr neu gestartet werden. Nicht, dass es wirklich erforderlich wäre.
Mit 'root' wird angegeben, welcher Benutzer das Kommando ausführt.

30 2 * * * root /sbin/shutdown -r now

Kommando täglich um 07:01 Uhr ausführen

1 7 * * *

Kommando von Montag bis Freitag um 05:10 Uhr ausführen

10 5 * * 1,2,3,4,5

oder

10 5 * * 1-5

Kommando alle 30 Minuten ausführen

*/30 * * * *

Kommando jede Stunde von viertel nach voll bis viertel vor voll alle 10 Minuten

15-45/10 * * * *