Herunterfahren des Linux-Servers am ersten Mittwoch jedes Monats

Herunterfahren des Linux-Servers am ersten Mittwoch jedes Monats

Ich habe einen Crontab-Eintrag wie folgt geschrieben:

00 19 1-7 * 3 /sbin/init 0

Es sollte meinen Linux-Server am ersten Mittwoch jedes Monats abschalten. Leider ist der Server heute (Donnerstag) abgeschaltet worden. Kann mir bitte jemand sagen, warum das so passiert ist und wie ich es beheben kann?

Antwort1

Auscrontab(5):

   Note: The day of a command's execution can be specified by two fields --
   day of month, and day of week.  If  both  fields  are  restricted  (ie,
   aren't  *),  the command will be run when either field matches the cur-
   rent time.

Das bedeutet, dass IhrcrontabEintrag funktioniert nicht wie erwartet. Der Befehl wird jeden Tag vom 1. bis zum 7. des Monats sowie jeden Mittwoch ausgeführt.

Aus diesem Grundcronallein wird nicht entscheiden können, ob es der erste Mittwoch im Monat ist oder nicht. Sie können jedoch eine Bedingung überprüfen, indem Siecronund prüfen Sie den anderen mitprüfenUndDatum:

00 19 1-7 * * [ $(/usr/bin/date +\%w) = 3 ] && /sbin/init 0

Wie es funktioniert:

  • Der Befehl wird täglich vom 1. bis zum 7. Tag des Monats ausgeführt.

  • $(/usr/bin/date +\%w)gibt den Wochentag zurück.

  • [ ... = 3 ] &&prüft, ob der Wochentag Mittwoch ist (3).

  • Wenn dies der Fall ist, /sbin/init 0wird es ausgeführt.

Beachten Sie, dass Sie das Prozentzeichen maskieren müssen, da es eine Sonderfunktion hat fürcron.

verwandte Informationen