Данный материал прислал Roman Oreshnikov
Прочитав предыдущую статью, можно решить, что logadm, как иструмент
для ротации логов никуда не годится. Однако это не так. Как говорится, кто
предупрежден - тот вооружен.
Кратковременное отсутствие в системе имени лог-файла не принципиально,
так как процесс продолжает писать в переименованный файл, а к моменту, когда
он будет переключаться на новый файл, logadm уже его создаст с правильными
правами доступа, группой и владельцем.
Ротацию с переносом старого лог-файла на другую файловую систему
следует выполнять пользуясь ключом -E совместно с '-C 1'. Практически
это более логично - последующим анализаторам логов не надо думать, где
же искать отротированный лог.
logadm -w Файл -р 1d -s 1b -a 'kill -HUP `cat Pid-файл`' -C 1 -E 'mv $file Архив/Файл`
logadm -w Архив/Файл -p 1d -s 1b
Ротацию с упаковкой всех старых логов '-z 0', следует заменить
на ротацию с архивированием всех старых, кроме последнего, т.е. использовать
'-z 1'. Практически это более эффективно - не приходится распаковывать
файл программой-анализатором традиционно запускаемой после ротации.
logadm -w Файл -р 1d -s 1b -a 'kill -HUP `cat Pid-файл`' -z 1
Авторотация с параметрами по умолчанию тоже решаема. Надо только
удалять вновь появившиеся строки или добавлять '-C 0 -p never' к ним
(почему этого не догадались сделать сами разработчики программы - загадка).
Последнее более правильно - всегда можно посмотреть когда файл отротировался.
Проще всего это сделать скриптом запускаемым после завершения работы logadm.
Так как строки авторотации отличаются от обычных отсутствием дополнительных
ключей, то скрипт получается очень простой.
sed -e "s/^\\([^ ]*\\) -P '\\([^']*\\)'\$/\\1 -P '\\2' -C 0 -p never/" Old >New