Русский перевод статьи о ротации журналов (лог-файлов) используя стандартный механизм FreeBSD -- newsyslog.URL: http://old.softerra.ru/freeos/16169/page1.html
Новость: http://www.opennet.me/opennews/art.shtml?num=1036
Люди знающие. Расскажите мне плиз, а как newsyslog узнаёт о том, что демоны(апатча) остановлены и можно резать логи?
>Люди знающие. Расскажите мне плиз, а как newsyslog узнаёт о том, что
>демоны(апатча) остановлены и можно резать логи?
Насколько я понимаю механизм работы, то работает оно так:
1.newsyslog переименовывает файлы с логами (осуществляет непосредственно ротацию). При этом поскольку файл еще открыт, данные пишутся в него, хотя он уже и под другим именем.
2. производится посылка определенного сигнала определенному процессу(номер процесса берется из pid файла), после чего процесс производит переоткрытие файла (с основным именем) и пишет в него свой лог.
А разве такое возможно, чтобы логи от апатча писались в другое место (переименованный лог), а не то, что указано у него в конфиге?
>А разве такое возможно, чтобы логи от апатча писались в другое место
>(переименованный лог), а не то, что указано у него в конфиге?
>
Открывается файл, программа получает дескриптор файла. Далее она работает с дескриптором и ей всеравно какое у файла имя.ИМХО: В сути юниксовых ФС лежит следующий принцип. Есть inode к которой могут ссылаться (hardlink) несколько имен, в т ч в разных каталогах.
Когда ты удаляешь файл, то происходит только удаление линка от имени к inode. Когда количество inode становится равно нулю - то она становится свободной. Допустим с фтп у тебя скачивают файл, ты его удаляешь - но пользователь продолжит тянуть его, место на диске соотвественно не освободится. Произойдет это когда закроется последний файловый дескриптор, ссылающийся на этот файл.
Большое спасибо PavelR. Разжували и накормили :)