Как интерпретировать эту команду 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}, чтобы сделать скрипт более чистым, и, возможно, использовать скрипт на другом компьютере.