почему crontab -l не показывал все задачи

Вопрос или проблема

Я добавляю настройку crontab в файл /etc/crontab:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# Подробности см. в man 4 crontabs

# Пример определения задания:
# .---------------- минута (0 - 59)
# |  .------------- час (0 - 23)
# |  |  .---------- день месяца (1 - 31)
# |  |  |  .------- месяц (1 - 12) ИЛИ jan,feb,mar,apr ...
# |  |  |  |  .---- день недели (0 - 6) (воскресенье=0 или 7) ИЛИ sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * имя-пользователя команда для выполнения
0 0 */1 * * root chmod +x /root/source/auto-renew.sh && /root/source/auto-renew.sh >> /root/source/auto-renew-cron.log 2>&1

когда я использую crontab -l, это задание crontab не отображается:

[root@iZm5e2jhfbrshckqh6qdbuZ cron.d]# crontab -l
45 6 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null

почему crontab -l не показывает задание из /etc/crontab? это лог:

[root@iZm5e2jhfbrshckqh6qdbuZ cron.d]# journalctl -u crond
-- Логи начинаются с Ср 2024-11-20 15:32:06 CST, заканчиваются Ср 2025-01-01 13:54:30 CST. --
Nov 20 16:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1444408]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 17:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1486477]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 18:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1528604]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 19:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1570709]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 20:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1612872]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 21:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1655340]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 22:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1697643]: (root) CMD (run-parts /etc/cron.hourly)
Nov 20 23:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1739698]: (root) CMD (run-пarts /etc/cron.hourly)
Nov 21 00:00:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1781104]: (root) CMD (chmod +x /root/source/auto-renew.sh && /root/source/auto-renew.sh >> /root/source/auto-renew-cron.log 2>&1)
Nov 21 00:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1781971]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 00:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1781980]: Anacron запущен 2024-11-21
Nov 21 00:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1781980]: Нормальное завершение (0 заданий выполнено)
Nov 21 01:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1824103]: (root) CMD (run-пarts /etc/cron.hourly)
Nov 21 01:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1824112]: Anacron запущен 2024-11-21
Nov 21 01:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1824112]: Нормальное завершение (0 заданий выполнено)
Nov 21 02:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1866166]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 02:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1866175]: Anacron запущен 2024-11-21
Nov 21 02:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1866175]: Нормальное завершение (0 заданий выполнено)
Nov 21 03:01:01 iZm5e2jhfbrshckqh6qdbuZ CROND[1908181]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 03:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1908190]: Anacron запущен 2024-11-21
Nov 21 03:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1908190]: Запустит задание `cron.daily' через 50 мин.
Nov 21 03:01:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1908190]: Задания будут выполнены последовательно
Nov 21 03:51:01 iZm5e2jhfbrshckqh6qdbuZ anacron[1908190]: Задание `cron.daily' начато
Nov 21 03:51:01 iZm5е2jhfbrshckqh6qdbuZ anacron[1908190]: Задание `cron.daily' завершено
Nov 21 03:51:01 iZm5е2jhfbrshckqh6qdbuZ anacron[1908190]: Нормальное завершение (1 задание выполнено)
Nov 21 04:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[1950218]: (root) CMD (run-пarts /etc/cron.hourly)
Nov 21 05:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[1992303]: (root) CMD (run-пarts /etc/cron.hourly)
Nov 21 06:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2034382]: (root) CMD (run-пarts /etc/cron.hourly)
Nov 21 07:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2076636]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 08:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2118744]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 09:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2160824]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 10:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2203126]: (root) CMD (run-parts /etc/cron.hourly)
Nov 21 11:01:01 iZm5е2jhfbrshckqh6qdbuZ CROND[2245206]: (root) CMD (run-parts /etc/cron.hourly)

Ответ или решение

Вопрос о том, почему команда crontab -l не отображает задания, которые вы добавили в файл /etc/crontab, имеет простое и логическое объяснение, которое связано с архитектурой и принципами работы cron в Unix-системах.

Почему crontab -l не показывает задания из /etc/crontab?

  1. Разделение crontab’ов:

    В Unix-системах есть несколько уровней crontab’ов:

    • Пользовательские crontab’ы: Они управляются командами crontab, такими как crontab -e для редактирования и crontab -l для просмотра. Эти файлы находятся в /var/spool/cron/crontabs/ и контролируются самим пользователем.
    • системные crontab’ы: Файлы, такие как /etc/crontab, и файлы внутри /etc/cron.d/ управляются непосредственно администратором системы. Они используются для заданий, которые должны выполняться от имени системы или определенных пользователей, без необходимости заходить под аккаунт этого пользователя.
  2. Назначение crontab -l:

    Команда crontab -l предназначена для отображения всех cron задач, назначенных текущему пользователю. Она работает только с пользовательскими crontab’ами, которые были установлены с использованием команды crontab. Так как вы вносите изменения в системный файл /etc/crontab, они не будут видны при использовании crontab -l, поскольку этот файл независим от пользовательского crontab.

  3. /etc/crontab — уникальность:

    В файле /etc/crontab присутствует дополнительное поле, которое определяет, от имени какого пользователя должно выполняться задание. Это отличает его от обычных пользовательских crontab’ов и требует другого подхода для подачи заданий.

Как просматривать системные crontab’ы?

Для проверки заданий, содержащихся в системных crontab’ах:

  • Откройте файлы вручную: Используйте текстовый редактор, такой как nano или vim, чтобы открыть и просмотреть содержимое /etc/crontab или файлов в /etc/cron.d/.
  • *Проверьте скрипты в /etc/cron. папках**: Эти папки могут содержать дополнительные задания, организованные по частоте выполнения — ежедневно, еженедельно и т. д.

Заключение

Ваше задание, добавленное в /etc/crontab, корректно зарегистрировано и выполняется, что подтверждают журнальные записи (journalctl -u crond), свидетельствующие об успешном выполнении скрипта. Однако это задание не будет отображаться через crontab -l, так как это разные контексты crontab’ов.

Поддержание понимание различий между системными и пользовательскими crontab — это часть эффективного управления задачами на Unix-системах. Если у вас есть какие-либо другие вопросы или проблемные зоны по теме cron, пожалуйста, дайте знать!

Оцените материал
Добавить комментарий

Капча загружается...