Настройка cron задач и планировщика — различия между версиями
Admin (обсуждение | вклад) (Новая страница: «= Настройка cron задач и планировщика = == 1. Подготовка системы == * Войдите в систему под уче…») |
Admin (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
* Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | * Убедитесь, что у вас есть доступ к серверу через SSH или консоль. | ||
− | == 2. Установка и настройка cron | + | == 2. Установка и настройка cron == |
=== Проверка установки cron === | === Проверка установки cron === | ||
1. Проверьте, установлен ли cron: | 1. Проверьте, установлен ли cron: | ||
− | < | + | <pre>which cron</pre> |
− | < | + | <pre>systemctl status cron</pre> |
2. Если не установлен, установите: | 2. Если не установлен, установите: | ||
− | < | + | <pre>sudo apt update</pre> |
− | < | + | <pre>sudo apt install -y cron</pre> |
3. Запустите и включите автозапуск: | 3. Запустите и включите автозапуск: | ||
− | < | + | <pre>sudo systemctl start cron</pre> |
− | < | + | <pre>sudo systemctl enable cron</pre> |
4. Проверьте статус: | 4. Проверьте статус: | ||
− | < | + | <pre>sudo systemctl status cron</pre> |
=== Настройка cron === | === Настройка cron === | ||
1. Отредактируйте crontab для root: | 1. Отредактируйте crontab для root: | ||
− | < | + | <pre>sudo crontab -e</pre> |
2. Отредактируйте crontab для текущего пользователя: | 2. Отредактируйте crontab для текущего пользователя: | ||
− | < | + | <pre>crontab -e</pre> |
3. Просмотр текущих задач: | 3. Просмотр текущих задач: | ||
− | < | + | <pre>crontab -l</pre> |
4. Удаление всех задач: | 4. Удаление всех задач: | ||
− | < | + | <pre>crontab -r</pre> |
− | == 3. Синтаксис cron | + | == 3. Синтаксис cron == |
=== Формат времени === | === Формат времени === | ||
Cron использует следующий формат: | Cron использует следующий формат: | ||
− | < | + | <pre>минута час день месяц день_недели команда</pre> |
**Поля времени:** | **Поля времени:** | ||
Строка 56: | Строка 56: | ||
1. '''Каждую минуту''': | 1. '''Каждую минуту''': | ||
− | < | + | <pre>* * * * * команда</pre> |
2. '''Каждый час в 0 минут''': | 2. '''Каждый час в 0 минут''': | ||
− | < | + | <pre>0 * * * * команда</pre> |
3. '''Каждый день в 2:30 утра''': | 3. '''Каждый день в 2:30 утра''': | ||
− | < | + | <pre>30 2 * * * команда</pre> |
4. '''Каждый понедельник в 9:00''': | 4. '''Каждый понедельник в 9:00''': | ||
− | < | + | <pre>0 9 * * 1 команда</pre> |
5. '''Каждый месяц 1 числа в 12:00''': | 5. '''Каждый месяц 1 числа в 12:00''': | ||
− | < | + | <pre>0 12 1 * * команда</pre> |
6. '''Каждые 15 минут''': | 6. '''Каждые 15 минут''': | ||
− | < | + | <pre>*/15 * * * * команда</pre> |
7. '''С понедельника по пятницу в 18:00''': | 7. '''С понедельника по пятницу в 18:00''': | ||
− | < | + | <pre>0 18 * * 1-5 команда</pre> |
8. '''В определенные дни месяца''': | 8. '''В определенные дни месяца''': | ||
− | < | + | <pre>0 0 1,15 * * команда</pre> |
− | == 4. Создание cron задач | + | == 4. Создание cron задач == |
=== Базовые задачи === | === Базовые задачи === | ||
1. '''Резервное копирование каждый день в 3:00''': | 1. '''Резервное копирование каждый день в 3:00''': | ||
− | < | + | <pre>0 3 * * * /usr/local/bin/backup.sh</pre> |
2. '''Очистка логов каждую неделю''': | 2. '''Очистка логов каждую неделю''': | ||
− | < | + | <pre>0 2 * * 0 /usr/local/bin/cleanup-logs.sh</pre> |
3. '''Обновление системы каждую неделю''': | 3. '''Обновление системы каждую неделю''': | ||
− | < | + | <pre>0 4 * * 1 /usr/bin/apt update && /usr/bin/apt upgrade -y</pre> |
4. '''Мониторинг дискового пространства''': | 4. '''Мониторинг дискового пространства''': | ||
− | < | + | <pre>0 */6 * * * /usr/local/bin/disk-monitor.sh</pre> |
=== Задачи с переменными окружения === | === Задачи с переменными окружения === | ||
1. '''Настройка переменных окружения''': | 1. '''Настройка переменных окружения''': | ||
− | < | + | <pre>SHELL=/bin/bash |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||
MAILTO=admin@example.com | MAILTO=admin@example.com | ||
0 3 * * * /usr/local/bin/backup.sh | 0 3 * * * /usr/local/bin/backup.sh | ||
− | </ | + | </pre> |
2. '''Задача с перенаправлением вывода''': | 2. '''Задача с перенаправлением вывода''': | ||
− | < | + | <pre>0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1</pre> |
=== Задачи с условиями === | === Задачи с условиями === | ||
1. '''Выполнение только в рабочие дни''': | 1. '''Выполнение только в рабочие дни''': | ||
− | < | + | <pre>0 9 * * 1-5 /usr/local/bin/daily-report.sh</pre> |
2. '''Выполнение только в определенные месяцы''': | 2. '''Выполнение только в определенные месяцы''': | ||
− | < | + | <pre>0 0 1 1,4,7,10 * /usr/local/bin/quarterly-task.sh</pre> |
− | == 5. Управление cron задачами | + | == 5. Управление cron задачами == |
=== Просмотр задач === | === Просмотр задач === | ||
1. '''Просмотр задач текущего пользователя''': | 1. '''Просмотр задач текущего пользователя''': | ||
− | < | + | <pre>crontab -l</pre> |
2. '''Просмотр задач другого пользователя''': | 2. '''Просмотр задач другого пользователя''': | ||
− | < | + | <pre>sudo crontab -l -u username</pre> |
3. '''Просмотр системных задач''': | 3. '''Просмотр системных задач''': | ||
− | < | + | <pre>sudo cat /etc/crontab</pre> |
4. '''Просмотр задач в /etc/cron.d/''': | 4. '''Просмотр задач в /etc/cron.d/''': | ||
− | < | + | <pre>sudo ls -la /etc/cron.d/</pre> |
=== Редактирование задач === | === Редактирование задач === | ||
1. '''Редактирование crontab''': | 1. '''Редактирование crontab''': | ||
− | < | + | <pre>crontab -e</pre> |
2. '''Редактирование crontab другого пользователя''': | 2. '''Редактирование crontab другого пользователя''': | ||
− | < | + | <pre>sudo crontab -e -u username</pre> |
3. '''Импорт задач из файла''': | 3. '''Импорт задач из файла''': | ||
− | < | + | <pre>crontab /path/to/crontab-file</pre> |
=== Удаление задач === | === Удаление задач === | ||
1. '''Удаление всех задач пользователя''': | 1. '''Удаление всех задач пользователя''': | ||
− | < | + | <pre>crontab -r</pre> |
2. '''Удаление задач другого пользователя''': | 2. '''Удаление задач другого пользователя''': | ||
− | < | + | <pre>sudo crontab -r -u username</pre> |
3. '''Удаление конкретной задачи''': | 3. '''Удаление конкретной задачи''': | ||
Отредактируйте crontab и удалите нужную строку | Отредактируйте crontab и удалите нужную строку | ||
− | == 6. Системные cron директории | + | == 6. Системные cron директории == |
=== /etc/crontab === | === /etc/crontab === | ||
1. Отредактируйте системный crontab: | 1. Отредактируйте системный crontab: | ||
− | < | + | <pre>sudo nano /etc/crontab</pre> |
2. Добавьте системные задачи: | 2. Добавьте системные задачи: | ||
− | < | + | <pre>\# Системные задачи |
0 3 * * * root /usr/local/bin/system-backup.sh | 0 3 * * * root /usr/local/bin/system-backup.sh | ||
0 4 * * 0 root /usr/local/bin/weekly-maintenance.sh | 0 4 * * 0 root /usr/local/bin/weekly-maintenance.sh | ||
− | </ | + | </pre> |
=== /etc/cron.d/ === | === /etc/cron.d/ === | ||
1. Создайте файл для конкретного сервиса: | 1. Создайте файл для конкретного сервиса: | ||
− | < | + | <pre>sudo nano /etc/cron.d/my-service</pre> |
2. Добавьте задачи: | 2. Добавьте задачи: | ||
− | < | + | <pre>SHELL=/bin/bash |
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||
MAILTO=admin@example.com | MAILTO=admin@example.com | ||
0 2 * * * root /usr/local/bin/service-backup.sh | 0 2 * * * root /usr/local/bin/service-backup.sh | ||
− | </ | + | </pre> |
=== Специальные директории === | === Специальные директории === | ||
Строка 190: | Строка 190: | ||
1. Создайте скрипт: | 1. Создайте скрипт: | ||
− | < | + | <pre>sudo nano /etc/cron.daily/my-daily-script</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>\#!/bin/bash |
− | # Ежедневная задача | + | \# Ежедневная задача |
echo "Daily task executed at $(date)" >> /var/log/daily-task.log | echo "Daily task executed at $(date)" >> /var/log/daily-task.log | ||
/usr/local/bin/backup.sh | /usr/local/bin/backup.sh | ||
− | </ | + | </pre> |
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>sudo chmod +x /etc/cron.daily/my-daily-script</pre> |
− | == 7. Мониторинг и логирование | + | == 7. Мониторинг и логирование == |
=== Просмотр логов cron === | === Просмотр логов cron === | ||
1. '''Просмотр системных логов''': | 1. '''Просмотр системных логов''': | ||
− | < | + | <pre>sudo tail -f /var/log/syslog | grep CRON</pre> |
2. '''Просмотр логов cron''': | 2. '''Просмотр логов cron''': | ||
− | < | + | <pre>sudo tail -f /var/log/cron.log</pre> |
3. '''Поиск ошибок в логах''': | 3. '''Поиск ошибок в логах''': | ||
− | < | + | <pre>sudo grep "CRON" /var/log/syslog | grep -i error</pre> |
=== Настройка уведомлений === | === Настройка уведомлений === | ||
1. '''Настройка MAILTO в crontab''': | 1. '''Настройка MAILTO в crontab''': | ||
− | < | + | <pre>MAILTO=admin@example.com |
0 3 * * * /usr/local/bin/backup.sh | 0 3 * * * /usr/local/bin/backup.sh | ||
− | </ | + | </pre> |
2. '''Отключение уведомлений''': | 2. '''Отключение уведомлений''': | ||
− | < | + | <pre>MAILTO="" |
0 3 * * * /usr/local/bin/backup.sh | 0 3 * * * /usr/local/bin/backup.sh | ||
− | </ | + | </pre> |
3. '''Перенаправление вывода в файл''': | 3. '''Перенаправление вывода в файл''': | ||
− | < | + | <pre>0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1</pre> |
=== Создание скрипта мониторинга === | === Создание скрипта мониторинга === | ||
1. Создайте скрипт мониторинга: | 1. Создайте скрипт мониторинга: | ||
− | < | + | <pre>nano /usr/local/bin/cron-monitor.sh</pre> |
2. Добавьте содержимое: | 2. Добавьте содержимое: | ||
− | < | + | <pre>\#!/bin/bash |
− | # Проверка статуса cron | + | \# Проверка статуса cron |
if ! systemctl is-active --quiet cron; then | if ! systemctl is-active --quiet cron; then | ||
echo "CRON service is not running!" | mail -s "CRON Alert" admin@example.com | echo "CRON service is not running!" | mail -s "CRON Alert" admin@example.com | ||
fi | fi | ||
− | # Проверка последнего выполнения задач | + | \# Проверка последнего выполнения задач |
LAST_BACKUP=$(stat -c %Y /var/log/backup.log 2>/dev/null || echo 0) | LAST_BACKUP=$(stat -c %Y /var/log/backup.log 2>/dev/null || echo 0) | ||
CURRENT_TIME=$(date +%s) | CURRENT_TIME=$(date +%s) | ||
Строка 251: | Строка 251: | ||
echo "Backup task has not run in the last 24 hours!" | mail -s "Backup Alert" admin@example.com | echo "Backup task has not run in the last 24 hours!" | mail -s "Backup Alert" admin@example.com | ||
fi | fi | ||
− | </ | + | </pre> |
3. Сделайте скрипт исполняемым: | 3. Сделайте скрипт исполняемым: | ||
− | < | + | <pre>chmod +x /usr/local/bin/cron-monitor.sh</pre> |
4. Добавьте в crontab: | 4. Добавьте в crontab: | ||
− | < | + | <pre>0 */6 * * * /usr/local/bin/cron-monitor.sh</pre> |
− | == 8. Продвинутые настройки | + | == 8. Продвинутые настройки == |
=== Использование anacron === | === Использование anacron === | ||
1. Установите anacron: | 1. Установите anacron: | ||
− | < | + | <pre>sudo apt install -y anacron</pre> |
2. Настройте anacron: | 2. Настройте anacron: | ||
− | < | + | <pre>sudo nano /etc/anacrontab</pre> |
3. Добавьте задачи: | 3. Добавьте задачи: | ||
− | < | + | <pre>\# /etc/anacrontab |
SHELL=/bin/sh | SHELL=/bin/sh | ||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||
MAILTO=root | MAILTO=root | ||
− | # Задачи anacron | + | \# Задачи anacron |
1 5 cron.daily run-parts /etc/cron.daily | 1 5 cron.daily run-parts /etc/cron.daily | ||
7 10 cron.weekly run-parts /etc/cron.weekly | 7 10 cron.weekly run-parts /etc/cron.weekly | ||
@monthly 15 cron.monthly run-parts /etc/cron.monthly | @monthly 15 cron.monthly run-parts /etc/cron.monthly | ||
− | </ | + | </pre> |
=== Использование at === | === Использование at === | ||
1. Установите at: | 1. Установите at: | ||
− | < | + | <pre>sudo apt install -y at</pre> |
2. Запустите atd: | 2. Запустите atd: | ||
− | < | + | <pre>sudo systemctl start atd</pre> |
− | < | + | <pre>sudo systemctl enable atd</pre> |
3. Планирование разовых задач: | 3. Планирование разовых задач: | ||
− | < | + | <pre>echo "backup.sh" | at 3:00 tomorrow</pre> |
− | < | + | <pre>echo "maintenance.sh" | at now + 1 hour</pre> |
4. Просмотр очереди at: | 4. Просмотр очереди at: | ||
− | < | + | <pre>atq</pre> |
5. Удаление задачи из очереди: | 5. Удаление задачи из очереди: | ||
− | < | + | <pre>atrm job_number</pre> |
− | == 9. Безопасность cron | + | == 9. Безопасность cron == |
=== Ограничение доступа === | === Ограничение доступа === | ||
1. '''Разрешить cron только определенным пользователям''': | 1. '''Разрешить cron только определенным пользователям''': | ||
− | < | + | <pre>sudo nano /etc/cron.allow</pre> |
− | < | + | <pre>root |
admin | admin | ||
backup-user | backup-user | ||
− | </ | + | </pre> |
2. '''Запретить cron определенным пользователям''': | 2. '''Запретить cron определенным пользователям''': | ||
− | < | + | <pre>sudo nano /etc/cron.deny</pre> |
− | < | + | <pre>guest |
test-user | test-user | ||
− | </ | + | </pre> |
=== Проверка безопасности === | === Проверка безопасности === | ||
1. '''Проверка прав доступа к crontab файлам''': | 1. '''Проверка прав доступа к crontab файлам''': | ||
− | < | + | <pre>ls -la /var/spool/cron/crontabs/</pre> |
2. '''Проверка системных cron файлов''': | 2. '''Проверка системных cron файлов''': | ||
− | < | + | <pre>ls -la /etc/cron.d/</pre> |
3. '''Проверка исполняемых файлов в cron директориях''': | 3. '''Проверка исполняемых файлов в cron директориях''': | ||
− | < | + | <pre>find /etc/cron.* -type f -executable</pre> |
− | == 10. Примеры практических задач | + | == 10. Примеры практических задач == |
=== Резервное копирование === | === Резервное копирование === | ||
1. '''Ежедневное резервное копирование базы данных''': | 1. '''Ежедневное резервное копирование базы данных''': | ||
− | < | + | <pre>0 2 * * * /usr/local/bin/mysql-backup.sh</pre> |
2. '''Еженедельное резервное копирование файлов''': | 2. '''Еженедельное резервное копирование файлов''': | ||
− | < | + | <pre>0 3 * * 0 /usr/local/bin/files-backup.sh</pre> |
3. '''Ежемесячная очистка старых бэкапов''': | 3. '''Ежемесячная очистка старых бэкапов''': | ||
− | < | + | <pre>0 4 1 * * /usr/local/bin/cleanup-old-backups.sh</pre> |
=== Мониторинг системы === | === Мониторинг системы === | ||
1. '''Проверка дискового пространства каждые 6 часов''': | 1. '''Проверка дискового пространства каждые 6 часов''': | ||
− | < | + | <pre>0 */6 * * * /usr/local/bin/disk-check.sh</pre> |
2. '''Мониторинг загрузки системы''': | 2. '''Мониторинг загрузки системы''': | ||
− | < | + | <pre>*/15 * * * * /usr/local/bin/load-monitor.sh</pre> |
3. '''Проверка доступности сервисов''': | 3. '''Проверка доступности сервисов''': | ||
− | < | + | <pre>*/5 * * * * /usr/local/bin/service-check.sh</pre> |
=== Обслуживание системы === | === Обслуживание системы === | ||
1. '''Очистка временных файлов''': | 1. '''Очистка временных файлов''': | ||
− | < | + | <pre>0 1 * * * /usr/local/bin/cleanup-temp.sh</pre> |
2. '''Ротация логов''': | 2. '''Ротация логов''': | ||
− | < | + | <pre>0 0 * * * /usr/local/bin/log-rotate.sh</pre> |
3. '''Обновление системы''': | 3. '''Обновление системы''': | ||
− | < | + | <pre>0 4 * * 1 /usr/local/bin/system-update.sh</pre> |
− | == 11. Устранение неполадок | + | == 11. Устранение неполадок == |
=== Частые проблемы === | === Частые проблемы === | ||
1. '''Cron задачи не выполняются''': | 1. '''Cron задачи не выполняются''': | ||
− | * Проверьте статус сервиса: < | + | * Проверьте статус сервиса: <pre>systemctl status cron</pre> |
* Проверьте синтаксис crontab | * Проверьте синтаксис crontab | ||
* Проверьте права доступа к скриптам | * Проверьте права доступа к скриптам | ||
Строка 387: | Строка 387: | ||
1. '''Проверка статуса cron''': | 1. '''Проверка статуса cron''': | ||
− | < | + | <pre>systemctl status cron</pre> |
2. '''Проверка логов''': | 2. '''Проверка логов''': | ||
− | < | + | <pre>tail -f /var/log/syslog | grep CRON</pre> |
3. '''Тестирование задач''': | 3. '''Тестирование задач''': | ||
− | < | + | <pre>sudo run-parts /etc/cron.daily</pre> |
4. '''Проверка синтаксиса crontab''': | 4. '''Проверка синтаксиса crontab''': | ||
− | < | + | <pre>crontab -l | crontab -</pre> |
== Заключение == | == Заключение == |
Текущая версия на 10:31, 15 октября 2025
Содержание
- 1 Настройка cron задач и планировщика
- 1.1 1. Подготовка системы
- 1.2 2. Установка и настройка cron
- 1.3 3. Синтаксис cron
- 1.4 4. Создание cron задач
- 1.5 5. Управление cron задачами
- 1.6 6. Системные cron директории
- 1.7 7. Мониторинг и логирование
- 1.8 8. Продвинутые настройки
- 1.9 9. Безопасность cron
- 1.10 10. Примеры практических задач
- 1.11 11. Устранение неполадок
- 1.12 Заключение
Настройка cron задач и планировщика
1. Подготовка системы
- Войдите в систему под учетной записью с правами root или пользователя с правами sudo.
- Убедитесь, что у вас есть доступ к серверу через SSH или консоль.
2. Установка и настройка cron
Проверка установки cron
1. Проверьте, установлен ли cron:
which cron
systemctl status cron
2. Если не установлен, установите:
sudo apt update
sudo apt install -y cron
3. Запустите и включите автозапуск:
sudo systemctl start cron
sudo systemctl enable cron
4. Проверьте статус:
sudo systemctl status cron
Настройка cron
1. Отредактируйте crontab для root:
sudo crontab -e
2. Отредактируйте crontab для текущего пользователя:
crontab -e
3. Просмотр текущих задач:
crontab -l
4. Удаление всех задач:
crontab -r
3. Синтаксис cron
Формат времени
Cron использует следующий формат:
минута час день месяц день_недели команда
- Поля времени:**
- Минута: 0-59
- Час: 0-23
- День месяца: 1-31
- Месяц: 1-12 или JAN-DEC
- День недели: 0-7 (0 и 7 = воскресенье) или SUN-SAT
Примеры расписания
1. Каждую минуту:
* * * * * команда
2. Каждый час в 0 минут:
0 * * * * команда
3. Каждый день в 2:30 утра:
30 2 * * * команда
4. Каждый понедельник в 9:00:
0 9 * * 1 команда
5. Каждый месяц 1 числа в 12:00:
0 12 1 * * команда
6. Каждые 15 минут:
*/15 * * * * команда
7. С понедельника по пятницу в 18:00:
0 18 * * 1-5 команда
8. В определенные дни месяца:
0 0 1,15 * * команда
4. Создание cron задач
Базовые задачи
1. Резервное копирование каждый день в 3:00:
0 3 * * * /usr/local/bin/backup.sh
2. Очистка логов каждую неделю:
0 2 * * 0 /usr/local/bin/cleanup-logs.sh
3. Обновление системы каждую неделю:
0 4 * * 1 /usr/bin/apt update && /usr/bin/apt upgrade -y
4. Мониторинг дискового пространства:
0 */6 * * * /usr/local/bin/disk-monitor.sh
Задачи с переменными окружения
1. Настройка переменных окружения:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=admin@example.com 0 3 * * * /usr/local/bin/backup.sh
2. Задача с перенаправлением вывода:
0 2 * * * /usr/local/bin/cleanup.sh >> /var/log/cleanup.log 2>&1
Задачи с условиями
1. Выполнение только в рабочие дни:
0 9 * * 1-5 /usr/local/bin/daily-report.sh
2. Выполнение только в определенные месяцы:
0 0 1 1,4,7,10 * /usr/local/bin/quarterly-task.sh
5. Управление cron задачами
Просмотр задач
1. Просмотр задач текущего пользователя:
crontab -l
2. Просмотр задач другого пользователя:
sudo crontab -l -u username
3. Просмотр системных задач:
sudo cat /etc/crontab
4. Просмотр задач в /etc/cron.d/:
sudo ls -la /etc/cron.d/
Редактирование задач
1. Редактирование crontab:
crontab -e
2. Редактирование crontab другого пользователя:
sudo crontab -e -u username
3. Импорт задач из файла:
crontab /path/to/crontab-file
Удаление задач
1. Удаление всех задач пользователя:
crontab -r
2. Удаление задач другого пользователя:
sudo crontab -r -u username
3. Удаление конкретной задачи: Отредактируйте crontab и удалите нужную строку
6. Системные cron директории
/etc/crontab
1. Отредактируйте системный crontab:
sudo nano /etc/crontab
2. Добавьте системные задачи:
\# Системные задачи 0 3 * * * root /usr/local/bin/system-backup.sh 0 4 * * 0 root /usr/local/bin/weekly-maintenance.sh
/etc/cron.d/
1. Создайте файл для конкретного сервиса:
sudo nano /etc/cron.d/my-service
2. Добавьте задачи:
SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=admin@example.com 0 2 * * * root /usr/local/bin/service-backup.sh
Специальные директории
1. /etc/cron.hourly/ - выполняется каждый час 2. /etc/cron.daily/ - выполняется каждый день 3. /etc/cron.weekly/ - выполняется каждую неделю 4. /etc/cron.monthly/ - выполняется каждый месяц
Создание скрипта для ежедневного выполнения
1. Создайте скрипт:
sudo nano /etc/cron.daily/my-daily-script
2. Добавьте содержимое:
\#!/bin/bash \# Ежедневная задача echo "Daily task executed at $(date)" >> /var/log/daily-task.log /usr/local/bin/backup.sh
3. Сделайте скрипт исполняемым:
sudo chmod +x /etc/cron.daily/my-daily-script
7. Мониторинг и логирование
Просмотр логов cron
1. Просмотр системных логов:
sudo tail -f /var/log/syslog | grep CRON
2. Просмотр логов cron:
sudo tail -f /var/log/cron.log
3. Поиск ошибок в логах:
sudo grep "CRON" /var/log/syslog | grep -i error
Настройка уведомлений
1. Настройка MAILTO в crontab:
MAILTO=admin@example.com 0 3 * * * /usr/local/bin/backup.sh
2. Отключение уведомлений:
MAILTO="" 0 3 * * * /usr/local/bin/backup.sh
3. Перенаправление вывода в файл:
0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
Создание скрипта мониторинга
1. Создайте скрипт мониторинга:
nano /usr/local/bin/cron-monitor.sh
2. Добавьте содержимое:
\#!/bin/bash \# Проверка статуса cron if ! systemctl is-active --quiet cron; then echo "CRON service is not running!" | mail -s "CRON Alert" admin@example.com fi \# Проверка последнего выполнения задач LAST_BACKUP=$(stat -c %Y /var/log/backup.log 2>/dev/null || echo 0) CURRENT_TIME=$(date +%s) TIME_DIFF=$((CURRENT_TIME - LAST_BACKUP)) if [ $TIME_DIFF -gt 86400 ]; then echo "Backup task has not run in the last 24 hours!" | mail -s "Backup Alert" admin@example.com fi
3. Сделайте скрипт исполняемым:
chmod +x /usr/local/bin/cron-monitor.sh
4. Добавьте в crontab:
0 */6 * * * /usr/local/bin/cron-monitor.sh
8. Продвинутые настройки
Использование anacron
1. Установите anacron:
sudo apt install -y anacron
2. Настройте anacron:
sudo nano /etc/anacrontab
3. Добавьте задачи:
\# /etc/anacrontab SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root \# Задачи anacron 1 5 cron.daily run-parts /etc/cron.daily 7 10 cron.weekly run-parts /etc/cron.weekly @monthly 15 cron.monthly run-parts /etc/cron.monthly
Использование at
1. Установите at:
sudo apt install -y at
2. Запустите atd:
sudo systemctl start atd
sudo systemctl enable atd
3. Планирование разовых задач:
echo "backup.sh" | at 3:00 tomorrow
echo "maintenance.sh" | at now + 1 hour
4. Просмотр очереди at:
atq
5. Удаление задачи из очереди:
atrm job_number
9. Безопасность cron
Ограничение доступа
1. Разрешить cron только определенным пользователям:
sudo nano /etc/cron.allow
root admin backup-user
2. Запретить cron определенным пользователям:
sudo nano /etc/cron.deny
guest test-user
Проверка безопасности
1. Проверка прав доступа к crontab файлам:
ls -la /var/spool/cron/crontabs/
2. Проверка системных cron файлов:
ls -la /etc/cron.d/
3. Проверка исполняемых файлов в cron директориях:
find /etc/cron.* -type f -executable
10. Примеры практических задач
Резервное копирование
1. Ежедневное резервное копирование базы данных:
0 2 * * * /usr/local/bin/mysql-backup.sh
2. Еженедельное резервное копирование файлов:
0 3 * * 0 /usr/local/bin/files-backup.sh
3. Ежемесячная очистка старых бэкапов:
0 4 1 * * /usr/local/bin/cleanup-old-backups.sh
Мониторинг системы
1. Проверка дискового пространства каждые 6 часов:
0 */6 * * * /usr/local/bin/disk-check.sh
2. Мониторинг загрузки системы:
*/15 * * * * /usr/local/bin/load-monitor.sh
3. Проверка доступности сервисов:
*/5 * * * * /usr/local/bin/service-check.sh
Обслуживание системы
1. Очистка временных файлов:
0 1 * * * /usr/local/bin/cleanup-temp.sh
2. Ротация логов:
0 0 * * * /usr/local/bin/log-rotate.sh
3. Обновление системы:
0 4 * * 1 /usr/local/bin/system-update.sh
11. Устранение неполадок
Частые проблемы
1. Cron задачи не выполняются:
- Проверьте статус сервиса:
systemctl status cron
- Проверьте синтаксис crontab
- Проверьте права доступа к скриптам
- Проверьте переменные окружения
2. Задачи выполняются, но не работают:
- Проверьте пути к исполняемым файлам
- Проверьте права доступа к файлам
- Добавьте логирование в скрипты
- Проверьте переменные окружения
3. Проблемы с уведомлениями:
- Настройте MAILTO
- Проверьте настройки почты
- Используйте перенаправление в файлы
Диагностика
1. Проверка статуса cron:
systemctl status cron
2. Проверка логов:
tail -f /var/log/syslog | grep CRON
3. Тестирование задач:
sudo run-parts /etc/cron.daily
4. Проверка синтаксиса crontab:
crontab -l | crontab -
Заключение
Cron успешно настроен и готов к работе! Теперь вы можете автоматизировать выполнение задач по расписанию.
Для размещения ваших автоматизированных систем на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):
- [Выделенные серверы](https://ark-hoster.ru/dedicated/) - для критически важных автоматизированных процессов
- [VPS/VDS серверы](https://ark-hoster.ru/vpsgame/) - для небольших и средних проектов
Наши специалисты помогут с настройкой cron и оптимизацией автоматизации ваших задач!