| This content in english |

Debian - crontab - Kom­mand­os au­t­oma­tisch aus­füh­ren las­sen

Problem

Auf einem Windows Server 2003 läuft unter VMWare ein Debian-Mail­ser­ver als Relay. Der Win­dows-Ser­ver wird re­gel­mäßig neu ge­star­tet, damit das Debian-Sys­tem eben­falls.

Lei­der 'ver­liert' das Debian-Sys­tem im­mer wie­der unter VMWare die Be­rech­ti­gun­gen für /var/log/clamav. Da­durch kön­nen clamav-daemon und clamav-freshclam die Log­da­tei­en nicht ver­wen­den und auch nicht ro­tie­ren las­sen (neue an­le­gen). Der Feh­ler tritt auch bei vCenter Ser­ver auf. Ver­wen­det habe ich Debian Lenny, Debian Squeeze. Dass der Feh­ler auf­tritt und das Sys­tem stört, kann ich nur än­dern, wenn ich in der Kon­so­le diese Kom­man­dos ein­ge­be:

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

Wenn ich nach­gese­hen habe, ste­hen gleich nach­dem der Dienst neu ge­star­tet wurde plötz­lich wie­der et­liche Ein­trä­ge in der be­tref­fen­den Log-Da­tei. Der Feh­ler scheint auf­zu­tre­ten, wenn das Sys­tem die Log-Da­tei ro­tie­ren will.

Ziel

Das Debian-Sys­tem soll diese Kom­mand­os täg­lich selb­stän­dig aus­füh­ren.

Lö­sung

In /etc/crontab habe ich ei­ni­­ge Zei­len hin­zu­ge­fügt. Nach den Ster­nen ha­be ich an­ge­ge­ben, welcher Be­nut­zer das Kom­man­do aus­führt.

Das Sys­tem soll in die­sem Bei­spiel täg­lich um 07:01, 07:03 und 07:05 Uhr die ver­schie­den­en Kom­man­dos aus­füh­ren. Die Er­ge­bnis­se kann man in /var/log/syslog sehen. Zum Be­ar­bei­ten habe ich 'mc' oder 'nano' ver­wen­det.

/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

Kur­ze Be­schrei­bung von /etc/crontab

Die Ster­ne ste­hen von links nach rechts für Mi­nu­te(0-59) Stun­de(0-23) Tag(0-31) Mo­nat(0-12) Wo­chentag(0-7)

Nicht nur 5 Ster­­ne und ein Kom­man­do set­zen!

Bei­spie­le

Der Com­pu­ter soll täg­lich um 02:30 Uhr neu ge­star­tet wer­den. Nicht, dass es wirk­lich er­for­der­lich wäre.
Mit 'root' wird an­ge­ge­ben, wel­cher Be­nut­zer das Kom­man­do aus­führt.

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

Kom­man­do täglich um 07:01 Uhr aus­füh­ren

1 7 * * *

Kom­man­do von Mo­ntag bis Frei­tag um 05:10 Uhr aus­füh­ren

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

oder

10 5 * * 1-5

Kom­man­do alle 30 Mi­nu­ten aus­füh­ren

*/30 * * * *

Kom­man­do jede Stun­de von vier­tel nach voll bis vier­tel vor voll alle 10 Mi­nu­ten

15-45/10 * * * *