Как добавить задачу в cron: пошагово
Пять шагов: проверить команду, открыть расписание, добавить строку, сохранить и убедиться, что задача сработала. Понадобится терминал, подключённый к серверу по SSH.
Содержание 11
Коротко
- Проверьте, что команда работает, если запустить её вручную.
- Откройте расписание:
crontab -e. - Добавьте в конец строку задачи и нажмите Enter.
- Сохраните файл: в nano — Ctrl+O, Enter, Ctrl+X.
- Проверьте запуск:
sudo journalctl -u cron -n 20.
1. Проверьте команду вручную
Команды вводятся в терминале сервера после подключения по SSH (как подключиться). Сначала убедитесь, что команда или скрипт работает, если запустить его самому. Например, скрипт резервной копии:
/home/ivan/backup.shЕсли ответ — Permission denied, у скрипта нет права на запуск. Дайте его командой chmod u+x /home/ivan/backup.sh (подробнее).
Узнайте полные пути к программам, которые вызывает команда: cron не знает ваших настроек терминала. Путь покажет команда which:
which phpОна ответит, например, /usr/bin/php — этот путь и пишите в расписании.
2. Откройте расписание
crontab -eЕсли расписания у вас ещё нет, команда сообщит об этом:
no crontab for ivan - using an empty oneЭто не ошибка: будет создано новое расписание.
При первом запуске команда может спросить, в каком редакторе открывать файл. Список на вашем сервере может отличаться:
Select an editor. To change later, run 'select-editor'.
1. /bin/nano <---- easiest
2. /usr/bin/vim.basic
Choose 1-2 [1]: Нажмите Enter — выберется nano, отмеченный словом easiest, «самый простой». Выбор запомнится; поменять редактор можно командой select-editor.
Откроется файл с подсказками на английском — строками, которые начинаются с #. Это комментарии, cron их пропускает. Удалять их не нужно.
3. Добавьте строку задачи
Стрелкой вниз перейдите в конец файла и напишите строку. Например, запуск скрипта каждый день в 3:30 с записью всего, что он выводит, в файл:
30 3 * * * /home/ivan/backup.sh >> /home/ivan/backup.log 2>&130 3 *— время: 30 минут, 3 часа, любой день. Как составить своё — в справочнике Cron в Linux: как устроено расписание, готовые варианты — в статье Расписание cron: готовые примеры./home/ivan/backup.sh— команда с полным путём.>> /home/ivan/backup.log 2>&1— дописывать вывод и ошибки в файл backup.log. Без этого вывод cron отправит письмом, а на сервере без почты он пропадёт.
В конце строки нажмите Enter: строка должна заканчиваться переводом строки.
Если команде нужен знак % — например, date +%F, — поставьте перед ним обратную косую черту: date +\%F. Иначе cron обрежет команду на этом знаке.
4. Сохраните расписание
В nano нажмите Ctrl+O, затем Enter, затем Ctrl+X (подробнее о nano). Если всё в порядке, терминал ответит:
crontab: installing new crontabРасписание вступило в силу. Перезапускать cron не нужно: он раз в минуту сам проверяет, не поменялись ли расписания.
Если вместо этого появилось errors in crontab file, can't install., в строке ошибка. Нажмите y и Enter — откроется тот же текст, исправьте строку и сохраните снова. Что значат сообщения об ошибках — в разборе errors in crontab file, can't install.
Посмотреть, что сохранилось, можно командой:
crontab -l5. Проверьте, что задача сработала
Чтобы не ждать ночи, временно поставьте задаче время на 2–3 минуты вперёд. Текущее время сервера покажет команда date — ориентируйтесь на него, а не на часы своего компьютера. После запуска откройте журнал cron:
sudo journalctl -u cron -n 20Запуск задачи выглядит так:
Oct 10 14:32:01 myserver CRON[2345]: (ivan) CMD (/home/ivan/backup.sh >> /home/ivan/backup.log 2>&1)Эта строка значит, что cron запустил команду. Что она сделала, смотрите в файле вывода:
cat /home/ivan/backup.logЕсли там ошибка или строки CMD в журнале нет — разбор Cron не запускает скрипт: что проверить. Когда всё заработает, верните задаче нужное время через crontab -e.
Как изменить, отключить или удалить задачу
- Изменить — откройте
crontab -e, исправьте строку и сохраните. - Отключить на время — поставьте
#в начале строки. Вернуть — уберите его. - Удалить одну задачу — удалите её строку. В nano строку целиком убирает Ctrl+K.
Команда crontab -r удаляет всё расписание сразу и ничего не спрашивает. Перед правками сохраните копию расписания в файл:
crontab -l > ~/crontab-copy.txtВернуть расписание из копии:
crontab ~/crontab-copy.txtЗадачи от имени root
Если команде нужны права администратора, не пишите sudo в строке расписания: cron не сможет ввести пароль, и задача не выполнится (почему). Добавьте задачу в расписание root:
sudo crontab -eЭто отдельное расписание: crontab -l его не покажет, смотрите его командой sudo crontab -l. Пример задачи root для резервных копий — в инструкции Резервные копии сайта.
Ошибки и как их исправить
| Ошибка | Что случилось | Разбор |
|---|---|---|
errors in crontab file, can't install. | В строке расписания ошибка | Разбор |
missing newline before EOF | Нет перевода строки в конце файла | Разбор |
You (ivan) are not allowed to use this program (crontab) | Пользователю запрещён cron | Разбор |
| Задача не запускается | Время, пути, оболочка или права | Разбор |
No MTA installed, discarding output | Вывод задачи некуда отправить | Разбор |
Команды и тексты сообщений сверены с пакетом cron 3.0pl1-184ubuntu2 из Ubuntu 24.04 — его справкой и исходным кодом.
Источники
- Справка crontab(1) из пакета cron для Ubuntu 24.04 — ключи -e, -l, -r и -i, файлы cron.allow и cron.deny.
- Справка crontab(5) из пакета cron для Ubuntu 24.04 — поля расписания, диапазоны, шаг, записи с @, знак %, переменные.
- Исходный код cron: crontab.c — тексты no crontab for, installing new crontab, errors in crontab file и другие.
- Исходный код sensible-utils: select-editor — меню выбора редактора.
- Исходный код cron: misc.c — вид записей cron в журнале.
- Справка journalctl для Ubuntu 24.04 — ключи -u и -n.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026