Как интерпретировать эту команду crontab?

Я знаю, что если бы я написал в crontab -e следующая команда 01 04 * * * somecommand тогда он будет работать somecommand в 4:01 утра каждый день каждого месяца.

Что произойдет, если я написал * * * * * somecommand? Будет ли это работать somecommand каждую минуту? Будет ли работать этот синтаксис?

И можно использовать специальные строки, такие как @reboot, @dailyи т. д., как это объясняется здесь. В какое время суток somecommand будет выполнен, если я напишу @daily somecommand команда?

2 ответа

Решение

Это будет запускать вашу команду каждую минуту. Это правильный синтаксис.

Вот кровавые подробности из info crontab:

        The first five fields  shall be integer patterns that specify the
        following:

        1. Minute [0,59]

        2. Hour [0,23]

        3. Day of the month [1,31]

        4. Month of the year [1,12]

        5. Day of the week ([0,6] with 0=Sunday)

       Each  of  these  patterns  can be either an asterisk (meaning all valid
       values), an element, or a list of elements separated by commas. An ele‐
       ment  shall  be  either  a  number or two numbers separated by a hyphen
       (meaning an inclusive range). The specification of days can be made  by
       two  fields  (day  of the month and day of the week).  If month, day of
       month, and day of week are all asterisks, every day shall  be  matched.
       If either the month or day of month is specified as an element or list,
       but the day of week is an asterisk, the month and day of  month  fields
       shall  specify  the days that match. If both month and day of month are
       specified as an asterisk, but day of week is an element or  list,  then
       only the specified days of the week match. Finally, if either the month
       or day of month is specified as an element or list, and the day of week
       is  also  specified as an element or list, then any day matching either
       the month and day of month, or the day of week, shall be matched.

Статья, на которую вы ссылаетесь, выглядит хорошей. Он дает вам несколько хороших примеров, и на самом деле его легче читать, чем отрывок из man-страницы, который я привел здесь.
Вы должны быть в состоянии использовать синтаксис, о котором он говорит.

Согласно моему crontab, @daily работает в 6:25 утра.

$ grep daily /etc/crontab 
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

Вы также можете указать нечетные частоты, используя косую черту в каждом столбце.

* */2 * * * foo

выполнит foo в часы, которые делятся на 2, а именно: 12:00, 2:00, 4:00, ...,10:00, 12:00.

Запомните эту команду

*/1 * * * * env > /home/yourUser/env.out

выведет переменные окружения среды crontab для вашей работы в вашем crontab. Вы можете использовать переменные типа ${HOME}, ${SHELL}, чтобы сделать скрипт более чистым, и, возможно, использовать скрипт на другом компьютере.

Другие вопросы по тегам