Моя установка базового клиента имеет Firefox, Adobe Acrobat Reader, Среду выполнения Java С 7 zip и шпаклевку.
Это - точно это; Tomcat (catalina.sh, чтобы быть конкретным) не открывает свой файл журнала с O_APPEND, и таким образом записи происходят в предыдущем положении, создавая дыру (аннулирует, не поднимая дискового пространства) до той точки.
Одна опция состоит в том, чтобы иметь post_command для перезапуска Tomcat после вращения.
Другой должен сделать catalina.out именованным каналом и иметь программу, читающую из него и делающую "правильную вещь". Дефект с этим - то, что, если программа не работает, Tomcat заполнит буфер канала и затем блок, пока это не будет истощено.
На самом деле catalina.sh
действительно намеревается открыть catalina.out
с помощью O_APPEND
: >> "$ CATALINA_OUT "2> & 1 &
Основная причина - оболочка: #! / Bin / sh
. Оболочка Solaris по умолчанию ( / bin / sh
) неправильно интерпретирует >>
, чтобы открыть выходной файл с помощью O_APPEND
.
Это не проблема в Linux. Вы можете обойти это для Solaris с помощью совместимой со стандартами оболочки: / usr / xpg4 / bin / sh
(см. man sh
)
Изменить catalina.sh
и замените #! / bin / sh
на #! / usr / xpg4 / bin / sh
. Недостатком является то, что каждый раз, когда вы обновляете Tomcat, вам нужно переделывать его.
Легко проверить, открывается ли catalina.out
с помощью O_APPEND
или нет, используя команду pfiles
.
1: S_IFREG mode:0644 dev:32,5 ino:13738 uid:0 gid:0 size:10170
O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
/opt/tomcat6/logs/catalina.out
Вы можете видеть, что ] / usr / xpg4 / bin / sh
открывает catalina.out
с помощью O_APPEND
.