Выключение Linux-сервера в первую среду каждого месяца

Выключение Linux-сервера в первую среду каждого месяца

Я написал запись в crontab следующим образом:

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

Он должен выключать мой сервер linux в первую среду каждого месяца. К сожалению, сервер выключился сегодня (в четверг). Может ли кто-нибудь сказать мне, почему это произошло, и как это исправить.

решение1

Откронтаб(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.

Это означает, что вашкронтабзапись не будет работать как ожидалось. Команда будет выполняться каждый день с 1 по 7 каждый месяц, а также каждую среду.

В связи с вышеизложенным,хронв одиночку не сможете решить, первая ли это среда месяца или нет. Однако вы можете проверить одно условие, используяхрони проверьте наличие другого с помощьютестидата:

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

Как это работает:

  • Команда будет выполняться каждый день с 1-го по 7-е число месяца.

  • $(/usr/bin/date +\%w)возвращает будний день.

  • [ ... = 3 ] &&проверяет, является ли этот день недели средой (3).

  • Если да, /sbin/init 0то его казнят.

Обратите внимание, что вам придется экранировать знак процента, так как он имеет особое значение.хрон.

Связанный контент