Задачи по расписанию
Задача по расписанию — команда, которая автоматически выполняется внутри контейнера вашего сервиса в заданное время. Удобный способ регулярно обслуживать приложение без внешних скриптов и серверов.
Типичные сценарии#
- Очистка временных файлов и кэша.
- Рассылка уведомлений и дайджестов.
- Импорт и синхронизация данных с внешними системами.
- Пересчёт отчётов и агрегатов.
- Регулярные команды фреймворка (планировщики, обработчики очередей).
Создание задачи#
- 1Откройте вкладку SchedulesСервис → вкладка Schedules. В списке видны все задачи: название, расписание, команда, состояние и время последнего запуска.
- 2Заполните формуНажмите Добавить задачу, заполните поля (описаны ниже) и нажмите Сохранить — задача создаётся уже включённой.
- 3Проверьте задачу вручнуюНе ждите наступления расписания: нажмите Запустить сейчас. Появится уведомление «Задача запущена вручную», а результат будет виден на вкладке Logs сервиса.
Поля формы
| Field | Description |
|---|---|
| Название | Короткое имя, по которому вы узнаете задачу в списке. Например cleanup-temp или daily-report. |
| Расписание (cron) | Готовый вариант — каждые 5 минут, каждый час, каждые 6 часов, каждый день в 00:00, раз в неделю (вс), раз в месяц (1-е) — или своё выражение. |
| Shell | Интерпретатор, в котором выполняется команда: bash по умолчанию или sh, если образ минимальный и bash в нём нет. |
| Команда | Строка, которая выполняется внутри контейнера — в рабочей директории приложения и со всеми его переменными окружения. |
Формат cron состоит из пяти полей: минута час день месяц день_недели.
| Выражение | Когда выполняется |
|---|---|
*/5 * * * * | каждые 5 минут |
0 * * * * | в начале каждого часа |
0 4 * * * | каждый день в 04:00 |
15 2 * * 1-5 | по будням в 02:15 |
0 0 1 * * | 1-го числа каждого месяца в полночь |
Примеры команд
bash
php artisan schedule:run
node scripts/cleanup.js
find /data/tmp -type f -mtime +7 -deleteУправление задачами#
| Field | Description |
|---|---|
| Переключатель | Временно отключить задачу, не удаляя её. |
| Запустить сейчас | Внеочередное выполнение команды. |
| Изменить | Поменять название, расписание, shell или команду. |
| Удалить | Убрать задачу окончательно. |
Важные особенности#
- Задача выполняется внутри запущенного контейнера. Если сервис остановлен, запуск не произойдёт.
- Время расписания указывается в UTC — учитывайте разницу с вашим часовым поясом.
- Задача не должна выполняться дольше интервала между запусками, иначе запуски начнут накладываться друг на друга.
- Долгие тяжёлые операции лучше выносить в отдельный сервис-воркер.
- Вывод команды попадает в общие логи сервиса — добавляйте понятные сообщения, чтобы легче было разбираться.
Задача и cron-сервис — не одно и то же
Задача по расписанию выполняет команду внутри существующего сервиса. Cron-сервис — отдельный контейнер, который запускается по расписанию и завершается.
Частые вопросы#
Почему задача не запустилась?
Проверьте, что сервис работает, задача включена и расписание указано в UTC. Затем посмотрите вкладку Logs — команда могла завершиться с ошибкой.
Как узнать, что команда отработала успешно?
Нажмите Запустить сейчас и сразу откройте Logs: вы увидите вывод команды и код завершения.
Можно ли запускать задачи для базы данных?
Задачи по расписанию доступны для приложений и стеков. Для регулярного сохранения данных базы используйте резервные копии.