Инструменты пользователя

Инструменты сайта


misc:cron

Сценарии использования Cron

  1. Ограничение времени выполнения:
    * * * * * timeout 300 /path/to/script.sh  # Остановить через 5 минут
  2. Блокировка через flock:
    * * * * * /usr/bin/flock -n /tmp/myscript.lock /path/to/script.sh

    где -n - не ждать, если скрипт уже работает (-w 10 - ждать 10 секунд, если требуется)

  3. Перенаправление вывода:
    • >> file.log 2>&1 - stdout + stderr в один файл
    • >> file.log 2>> error.log - раздельные логи
  4. Логирование с ротацией:
    0 0 * * * /path/to/script.sh >> "/var/log/script_$(date +\%Y\%m\%d).log" 2>&1
  5. Каскадные задачи с задержкой и проверкой статуса:
    # Основная задача в 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
  6. Запуск только при низкой загрузке CPU:
    0 22 * * * [ $(awk '{print 100-$NF}' /proc/loadavg | cut -d. -f1) -lt 30 ] && /path/to/backup.sh
  7. Пропуск запуска, если процесс уже выполняется:
    */5 * * * * [ $(pgrep -c -f "script.sh") -eq 0 ] && /path/to/script.sh
  8. Ротация логов:
    0 3 1 * * find /var/log/app/ -name "*.log" -mtime +30 -exec gzip {} \;
misc/cron.txt · Последнее изменение: nikolay