Comments 6
Таймеры systemd сожрут cron.(
Очень похоже на чатгпт..
За пример с flock большое спасибо!
Логирование с ротацией:
0 0 * * * /path/to/script.sh >> "/var/log/script_$(date +%Y%m%d).log" 2>&1
Думаю, тут стоило бы рассказать, почему нужно экранировать %
. Сам в своё время был неприятно удивлён, когда исправно работающая команда при запуске вручную, напрочь ломалась при запуске по крону. А причина вот в чём:
A "%" character in the command, unless escaped with a backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.
Тот случай, когда не сразу сообразишь, что надо почитать man :)
Ротация логов 0 3 1 * * find /var/log/app/ -name "*.log" -mtime +30 -exec gzip {} ; find /var/log/app/ - ищет файлы .log старше 30 дней
-exec gzip {} ; - сжимает их
На практике лучше воспользоваться logrotate
Cron в Linux: полное руководство для админов + скрытые проблемы