Планировщик заданий cron и команда crontab

Разберемся немного как добавить выполнение какого либо скрипта в планировщик заданий cron в ОС Linux Добавить задание на выполнение в определенное время можно используя программу crontab. Каждый пользователь системы имееет свой собственный файл, в котором прописаны все задания от данного пользователя (/var/spool/cron/). Просмотреть задания, которые уже добавлены в Ваш cron файл (в cron файл Вашего пользователя) можно через команду:


crontab -l

Конечно же, что Ваш cron файл может быть пустым пока-что. Что бы добавить новое задание используем команду:

crontab -e

Эта команда открывает cron файл Вашего пользователя через редактор, который используется по умолчанию в системе. Далее добавляем команду, которую надо запустить в определенное время, в следующем формате и сохраняем файл:

* * * * * /usr/bin/php /home/user/script.php

Распишем подробней что же означают звездочки:
(цифры — это номера звездочек)
1. Минуты (0 — 59)
2. Часы (0 — 23)
3. День месяца (0 — 31)
4. Месяц (1 -12)
5. День недели (0 — 6, 0 — воскресенье)

Вот с помощью этих звездочек мы указываем когда запускать команду (или как часто запускать). Например если вместо номера месяца стоит звездочка, значит команда будет запускаться каждый месяц. Если поставить звездочку на место минут, это будет означать каждую минуту и аналогично для остальных.
Например, нам надо, что бы shell скрипт запускался каждый день в 12.00 и 24.00, тогда запись в крон файл требуется добавить следующую:

0 0,12 * * * /path/to/shell-script.sh

значит
0 — это минуты
0,12 — мы точно указываем часы, в которые надо запускать
* * * — означает что запускать надо каждый день, каждый месяц, каждую неделю.
А вот если нам надо запускать скрипт каждый два часа, тогда можно воспользоваться двумя вариантами:

0 0,2,4,6,8,10,12,14,16,18,20,22 * * * /path/to/shell-script.sh

Но программа crontab разрешает нам поступить проще, а результат один и тот же:

0 */2 * * * /path/to/shell-script.sh

*/2 — запись указывает что скрипт будет запускаться каждые два часа.
На счет пути к скрипту: если в скрипте указан обработчик (для shell например это строка в начале файла #!/bin/shell или #!/bin/bash) тогда просто пишем путь к скрипту в крон файл, как показано выше; если же обработчик не указан в скрипте, то срока выглядела бы следующим образом:

0 */2 * * * /bin/shell /path/to/shell-script.sh

12 comments on “Планировщик заданий cron и команда crontab

  1. volos_86 29.01.2010 00:11

    А для скрипта юзера значит будет /home/username/skript.php ?

  2. admin 29.01.2010 02:13

    Смотрите статью, там был указан пример для пхп скрипта 😉

    * * * * * /usr/bin/php /home/user/script.php

  3. volos_86 29.01.2010 02:45

    то есть сначала путь до интерпретатора а затем до скрипта?

  4. admin 30.01.2010 02:48

    ну да, пишем команду, которую мы смогли бы выполнить с консоли. А с консоли пхп скрипт можешь запустить только через пхп обработчик.

  5. Александр 15.06.2012 00:21

    Подскажите, как будет выглядет команда для вывода содержимого файла ххх? Допустим, как выполнить однократно команду cat /home/sasha/xxx через crontab?

  6. Юрий 13.12.2013 13:47

    0 * * * * cat /home/sasha/xxx
    Каждый час в 0 минут

  7. Роман 22.02.2017 14:27

    «День месяца (0 — 31)» исправьте на правильное значение пожалуйста

  8. Aram 22.02.2017 14:31

    а как отключить crontab, который написана для cakephp?

  9. admin 22.02.2017 15:44

    Уточните что именно не так пожалуйста ?
    Вот из документации:

    #man 5 crontab
    field allowed values
    —— —————
    minute 0-59
    hour 0-23
    day of month 1-31
    month 1-12 (or names, see below)
    day of week 0-7 (0 or 7 is Sun, or use names)

  10. admin 22.02.2017 15:51

    Aram, вопрос не коректен. По настройкам cakephp обращайтесь к разработчикам , а по тому как убрать записи крон из crontab — под своим пользователем просмотреть текущие записи через ssh:
    crontab -l
    редактировать записи:
    crontab -e

  11. meran 20.11.2017 14:57

    Дякую за вашу публікацію. Це дуже корисно. Чи можу я поділитися цим?

  12. admin 01.12.2017 13:38

    дуже радий якщо стаття допомогла. Не зовсім розумію що означає поділитись, якщо Ви маєте на увазі скопіювати статтю — то не забудьте вказати посилання на оригінал.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>