Столкнулся вот с такой проблемой. Есть лог файл, в который скидывается всякая инфа, типа >> logfile.log. И есть logrotate, который должен был ротировать это файл. Но он копирует этот лог на новый, с датой уже, типа logfile.log-2021-06-30, тот оригинальный файл (logfile.log) обнуляется, а данные продолжают собираться не с нуля в том оригинально файле, а в том, что был скопирован.
Если работает сервис, как я понял, надо перезагружать сервисы, если к слову это http и .д., и файл начинает запись с нуля. А если запись идёт в мой файл не от какого диба сервиса. а просто выводы каких-то команд, вывод информации просто, с перенаправлением ">>" в этот файл, то и перезагружать нечего.
Как решить проблему? Что-то с дескрипторами файлов связано, вроде, да? Подскажите пожалуйста.
Конфиг ротейта-то покажите. По описанию похоже, что файл не пересоздаётся, а переименовывается "на лету", при этом файловый дескриптор остаётся старым, поэтому сервис и продолжает писать в него.
Просто copytruncate - не помог, но способ pfemidi, вроде сработал. create права имя_пользователя группа_пользователя
Запустил вручную ротейт, файл скопировался и запись пошла в правильный файл. Интересно, когда будет по графику запись сработает... Если да, то всем больше спасибо!!! Отпишусь как правильно сработает автоматом.
Pegas12345, нет не так. по умолчанию текущий файл переименовывается и создается новый.
А потом обычно сервису подается kill -HUP, чтобы он начал писать в новый файл.
copytruncate - это то, что должно работать в вашем случае.
Если не сработало - значит нужно понять - почему.
Alexey Dmitriev, да, интересно почему не срабатывает. Если бы был kill -HUP , то было бы легче, так как HTTP лог файлы так и делает и всё ок. А есл просто файл обычный, который уже есть без сервисов - почему-то не идёт. По форумам читал, вроде как что-то с дескриптором файла связано, то есть имя именяет, а его дескриптор всё тот же, и продолжается туда запись, а не по новому. Сколько искал не нашёл, как сбросить этот дескриптор/обновить по новому файлу. Везде только через рестарт сервиса, но у меня идёт запись в файл просто, перенаправлением вывода.
Может как-то с "create" было связано? хотя по факту не пойму почему. Вроде и так должно было бы идти. Логротейт вроде от рута и так, файлы его.