Я написал запись в 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
то его казнят.
Обратите внимание, что вам придется экранировать знак процента, так как он имеет особое значение.хрон.