misc:cron
Сценарии использования Cron
- Ограничение времени выполнения:
* * * * * timeout 300 /path/to/script.sh # Остановить через 5 минут
- Блокировка через
flock:* * * * * /usr/bin/flock -n /tmp/myscript.lock /path/to/script.sh
где
-n- не ждать, если скрипт уже работает (-w 10- ждать 10 секунд, если требуется) - Перенаправление вывода:
>> file.log 2>&1- stdout + stderr в один файл>> file.log 2>> error.log- раздельные логи
- Логирование с ротацией:
0 0 * * * /path/to/script.sh >> "/var/log/script_$(date +\%Y\%m\%d).log" 2>&1
- Каскадные задачи с задержкой и проверкой статуса:
# Основная задача в 2:00 0 2 * * * /path/to/first_task.sh && touch /tmp/first_success # Вторая задача через 15 минут, только если первая успешна 15 2 * * * [ -f /tmp/first_success ] && /path/to/second_task.sh && rm /tmp/first_success
- Запуск только при низкой загрузке CPU:
0 22 * * * [ $(awk '{print 100-$NF}' /proc/loadavg | cut -d. -f1) -lt 30 ] && /path/to/backup.sh - Пропуск запуска, если процесс уже выполняется:
*/5 * * * * [ $(pgrep -c -f "script.sh") -eq 0 ] && /path/to/script.sh
- Ротация логов:
0 3 1 * * find /var/log/app/ -name "*.log" -mtime +30 -exec gzip {} \;
misc/cron.txt · Последнее изменение: — nikolay
