
Tenho processos em execução no meu servidor que são eliminados todas as noites à meia-noite. Está no trabalho, não estou por perto quando isso acontece e não tenho acesso remoto.
A morte ocorre de forma muito previsível às 23h59 todas as noites. Eu sei disso porque quando chego no dia seguinte:
- Processos vão até às 23h59
- Os logs do processo mostram o horário da última modificação às 23h59 (e um novo log datado é iniciado logo em seguida).
Como o assassinato ocorre na mesma hora, suspeitei fortemente de um trabalho em lote. Examinei crontab
todas as nossas máquinas e não consegui encontrar nada. Claramente estou faltando alguma coisa.
Estou pensando em traçar um script de vigilância que reportaria a saída de ps
forma intermitente, seria lançado at
alguns minutos antes e ficaria em loop por um tempo. Essa ideia parece fraca e altamente propensa a erros, então estou me perguntando se alguém tem uma ideia melhor.
Mais detalhes:
O universo é um sistema legado muito grande e muito antigo; ninguém na minha equipe parece estar ciente de tal processo (se alguém soubesse, estaria em nossa equipe), embora a organização maior consista de milhares de funcionários, muitos deles teoricamente teriam acesso a isso (não vejo por que eles fariam isso). Em outras palavras, a segurança não é muito rígida.
O ambiente consiste em várias máquinas executando o Solaris 10.
Não é um ambiente de produção, portanto o tempo limite ou de inatividade não é crítico.
Não estou excluindo a possibilidade de que o assassinato não seja devido a um trabalho em lote, embora seja improvável devido à precisão do momento.
É evidente que existem deficiências na nossa contabilidade, pelo que tudo o que se possa imaginar é possível.
Minha pergunta é qual a melhor estratégia a adotar? Cai sob o guarda-chuva de “a alegria de trabalhar em sistemas legados”. Estou começando a trabalhar no meu roteiro que em breve postarei aqui para feedback. Enquanto isso, se alguém tiver uma ideia melhor, por favor diga.
Responder1
É comum girar as toras periodicamente, sendo comum girá-las à meia-noite. Muitos aplicativos farão isso automaticamente.
Para quem não tem, existem ferramentas como logrotate
essa que farão a rotação. Muitos programas são configurados para reabrir seus logs quando recebem um sinal HUP, e esta é uma das técnicas utilizadas pelo logrotate
.
Coisas para verificar:
- Todos os PIDs mudam. Caso contrário, os programas podem estar girando seus próprios logs ou respondendo adequadamente à rotação de seus logs.
- Para programas que alteram PIDs, eles foram reiniciados à meia-noite? Se não, verifique o pai para ver o que ele faz.
- Verifique o crontab em busca de root para ver quais processos são executados no final do dia.
- Verifique no crontab o ID do usuário do processo para ver quais processos são executados no final do dia.
- Verifique se os arquivos de log estão sendo gravados diretamente ou por um gravador de log que rotaciona os logs.