A solução acabou sendo tão simples
nohup ./startWebLogic.sh 2>&1 </dev/null | cat >> AdminServer.out &
e agora o AdminServer.out
pode ser rotacionado com logrotate
e a opção copytruncate
.
Estou trabalhando com o weblogic 10.3.5 no Ubuntu 12.04.
O Weblogic é iniciado usando
nohup ./startWebLogic.sh >Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out 2>&1 </dev/null &
Está funcionando bem e agora gostaria de girar AdminServer.out
usando logrotate
, mas parece que não é tão fácil de fazer. Pesquisando na internet não é muito claro entender se é possível ou não.
Eu tentei usar as opções copytruncate
. Quando o logrotate está executando, o tamanho do arquivo torna-se 0, mas retorna ao tamanho original após a primeira 'gravação' do servidor.
Também tentei renomear o arquivo. O servidor ainda grava no arquivo renomeado.
Parece que o servidor tem apenas um ponteiro para um arquivo, independentemente de seu nome ou tamanho.
Então ... existe uma solução? Usando logrotate ou não.
- EDITAR
Eu também tentei com
#!/bin/bash
mkdir -p tmp
if [ ! -p tmp/weblogic.fifo ]; then
mkfifo tmp/weblogic.fifo
fi
tail -f tmp/weblogic.fifo >> Oracle/Middleware/user_projects/domains/base_domain/servers/AdminServer/logs/AdminServer.out &
nohup ./startWebLogic.sh > /home/me/tmp/weblogic.fifo 2>&1 </dev/null &
Não sei se é apropriado, mas ... há pelo menos um problema: às vezes, ele desliga o arquivo. Às vezes, alguns segundos, mas depois de um tempo (mesmo antes do servidor ter iniciado) ... indefinidamente!
Portanto, não posso testar o logrotate.
A solução acabou sendo tão simples
nohup ./startWebLogic.sh 2>&1 </dev/null | cat >> AdminServer.out &
e agora o AdminServer.out
pode ser rotacionado com logrotate
e a opção copytruncate
.
Desconheça a necessidade de logrotate
. Você não precisa de logrotate
em primeiro lugar. Este é um problema que foi resolvido desde meados dos anos 90.
Obtenha um ou mais de:
multilog
de Dan Bernstein de daemontools ou multilog
de Bruce Guenter <multilog
de Laurent Bercot de s6 ou s6-log
de Gerrit Pape de runit ou svlogd
de perp ou tinylog
de nosh . e enviam a saída padrão do script e o erro padrão através de um pipe para sua entrada padrão, da maneira normal:
./startWebLogic.sh 2>&1 | cyclog logs/
Eles escreverão um conjunto de logs com limite de tamanho rotacionados automaticamente, rotacionados sob demanda em um diretório que você especificar, sem a necessidade de nenhum programa adicional de rotação de logs. Nenhum deles precisa de privilégios de superusuário. (Na verdade, longe de precisar ou esperar privilégios de superusuário é a melhor prática em seu caso de uso mais conhecido, registrando a saída do daemon, para executá-los em contas não privilegiadas.)