Rodar saída nohup

3

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.

    
por tweetysat 13.05.2015 / 09:00

2 respostas

3

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 .

    
por tweetysat 04.06.2015 / 12:23
4

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:

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.)

Leitura adicional

por JdeBP 13.05.2015 / 11:43

Tags