Необходимо проверить, что каждый из них в документации Microsoft - например, УСТАНОВИЛ ARITHABORT. Один простой способ состоит в том, чтобы искать на каждой команде SET в Google.
Возможно, вы можете использовать директивы firstaction или lastaction для вызова сценария оболочки, который проверяет наличие свободного места на диске, а затем запускает удаление самых старых файлов.
firstaction/endscript
The lines between firstaction and endscript (both of which must appear on lines by themselves) are
executed (using /bin/sh) once before all log files that match the wildcarded pattern are rotated,
before prerotate script is run and only if at least one log will actually be rotated. These
directives may only appear inside a log file definition. Whole pattern is passed to the script as
first argument. If the script exits with error, no further processing is done. See also lastac-
tion.
Обновление:
Вот пример Сообщение о типе сценария, который вы можете запустить:
https://stackoverflow.com/questions/7523059/remove-oldest-file-in-repository
logrotate не имеет такой опции. Вы можете добавить скрипт cron, который находит самый старый журнал и удаляет его всякий раз, когда свободное пространство оказывается ниже ваших критериев. Вы также можете выполнить другую проверку. Однако постоянно переполнять диск - не лучшая идея, поскольку система не сможет создавать большие временные файлы и может вызвать сбои приложений.
Я просто хотел указать, что есть случаи, когда вы не хотите, чтобы ваши журналы заполняли все доступное дисковое пространство. Я имел дело с несколькими хостами с каталогами thin provisioned / var, и сохранение журналов определенного размера было критически важным. Мы использовали работу с друзьями в сочетании с логроратом, чтобы уменьшить размер. Что-то подобное можно использовать в вашей среде, хотя центральный сервер журналов, такой как splunk или syslog-ng, вероятно, будет лучшим вариантом.
Как и предполагалось @cjc, можно использовать первое действие. Смотрите этот пример:
/mnt/user/logs/*.log /mnt/user/logs/*/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
su root www-data
create 760 root www-data
firstaction
for file in `find -type f -size +1024M`; do
percent=`df -h | grep /mnt/user | awk '{print $5}' | sed 's/%//'`
if [ $percent -gt 50 ]; then
echo "Removed $file" >> /mnt/user/logs/logrotate.log
rm $file
fi
done;
endscript
}
В этом примере вы удалили из раздела /mnt/user файлы размером больше 1 Гб, если используемое пространство раздела больше 50%.
.