Создание повторяющегося задания с помощью crontab -e
На этом этапе вы научитесь планировать периодические задачи с помощью cron. В отличие от at, который запускает задачу один раз, cron предназначен для многократного выполнения заданий по расписанию. Управление такими задачами происходит через специальный файл, называемый crontab.
Для редактирования файла crontab вашего пользователя используется команда crontab -e (флаг -e означает "edit" — редактировать).
Откроем файл crontab для внесения изменений.
crontab -e
Если вы запускаете crontab -e впервые, система может предложить выбрать текстовый редактор по умолчанию. Мы рекомендуем nano, так как он наиболее прост в освоении.
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
...
Choose 1-2 [1]:
Введите 1 и нажмите Enter, чтобы выбрать nano. Откроется файл crontab. Он будет почти пустым, за исключением комментариев с инструкциями по использованию.
Запись в crontab имеет строго определенный формат из шести полей:
минута час день-месяца месяц день-недели команда
Символ звездочки (*) в поле времени работает как подстановочный знак, означающий "каждый". Для нашей задачи мы хотим запускать команду каждую минуту. Это удобно для тестирования, так как результат виден почти сразу. Расписание для запуска "каждую минуту" выглядит так: * * * * *.
Добавьте новую строку в конец файла, чтобы запланировать задание, которое будет дописывать текущую дату и время в лог-файл cron_log.txt в вашем рабочем каталоге.
* * * * * date >> ~/project/cron_log.txt
После добавления строки ваш редактор должен выглядеть примерно так:
## Edit this file to introduce tasks to be run by cron.
#
## Each task to run has to be defined through a single line
## indicating with different fields when the task will be run
## and what command to run for the task
#
## To define the time you can provide concrete values for
## minute (m), hour (h), day of month (dom), month (mon),
## and day of week (dow) or use '*' in these fields (for 'any').
#
## Notice that tasks will be started based on the cron's system
## daemon's notion of time and timezones.
#
## Output of the crontab jobs (including errors) is sent through
## email to the user the crontab file belongs to (unless redirected).
#
## For example, you can run a backup of all your user accounts
## at 5 a.m. every week with:
## 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
## For more information see the manual pages of crontab(5) and cron(8)
#
## m h dom mon dow command
* * * * * date >> ~/project/cron_log.txt
Чтобы сохранить файл и выйти из nano, нажмите Ctrl-X, затем Y для подтверждения изменений и Enter для записи файла.
После выхода в терминале появится подтверждение:
crontab: installing new crontab
Это означает, что ваше новое задание cron активировано. Демон cron теперь будет проверять этот файл каждую минуту и выполнять вашу команду.
Подождите хотя бы одну минуту. Затем проверьте, был ли создан лог-файл.
ls -l ~/project/cron_log.txt
Вы должны увидеть файл в списке.
-rw-r--r-- 1 labex labex 29 Jan 1 12:15 /home/labex/project/cron_log.txt
Теперь просмотрите его содержимое.
cat ~/project/cron_log.txt
Вывод покажет дату и время первого выполнения команды.
Mon Jan 1 12:15:01 UTC 2024
Если вы подождете еще минуту и снова выполните команду cat, вы увидите новую строку с обновленной меткой времени, что доказывает циклическое выполнение задания.