Por exemplo, estou vendo isso em /var/log/messages
:
Mar 01 23:12:34 hostname shutdown: shutting down for system halt
Existe uma maneira de descobrir o que causou o desligamento? Por exemplo, foi executado no console ou alguém apertou o botão liga / desliga, etc.?
/var/log/acpid
: desligamos o botão liga / desliga. Alguma outra idéia, onde procurar se o acpid não der uma pista?Respostas:
Somente programas com privilégios de root podem desligar um sistema normalmente. Portanto, quando um sistema é desligado de maneira normal, é um usuário com privilégios de root ou um script acpi. Nos dois casos, você pode descobrir verificando os logs. Um desligamento acpi pode ser causado por pressionar o botão liga / desliga, superaquecimento ou bateria fraca (laptop). Esqueci a terceira razão, o software UPS quando a fonte de alimentação falha, o que enviará um alerta de qualquer maneira.
Recentemente, eu tinha um sistema que começou a desligar repetidamente sem sucesso, resultou em superaquecimento e o mobo foi configurado para desligar cedo. O sistema não teve a chance de salvar logs, mas felizmente o monitoramento da temperatura do sistema mostrou que estava começando a aumentar pouco antes de desligar.
Portanto, se for um desligamento normal, será registrado, se for uma invasão ... boa sorte, e se for um desligamento a frio, sua melhor chance de saber é controlar e monitorar seu ambiente.
fonte
Experimente os seguintes comandos:
Exibir lista das últimas entradas de reinicialização:
last reboot | less
Exibir lista das últimas entradas de desligamento:
last -x | less
ou mais precisamente:
last -x | grep shutdown | less
Você não saberá quem fez isso no entanto. Se você quiser saber quem fez isso, precisará adicionar um pouco de código, o que significa que você saberá na próxima vez.
Encontrei este recurso online. Pode ser útil para você:
Como descobrir quem ou o que interrompeu meu sistema
fonte
last -x shutdown
Há algumas coisas para verificar:
Verifique a saída do último comando -x
Execute este comando * e compare a saída com os exemplos abaixo:
Exemplos de desligamento normal
Um desligamento e inicialização normais são parecidos com este (observe que você tem um evento de desligamento e, em seguida, um evento de inicialização do sistema):
Em alguns casos, você pode ver isso (observe que não há linha sobre o desligamento, mas o sistema estava no nível de execução 0, que é o "estado de parada"):
Exemplos de desligamento inesperado
Um encerramento inesperado por perda de energia é semelhante a este (observe que você tem um evento de inicialização do sistema sem um evento anterior de desligamento do sistema):
Examine os logs em / var / log
Um comando bash para filtrar as mensagens de log mais interessantes é o seguinte:
Quando ocorrer um desligamento inesperado ou falha de hardware, os sistemas de arquivos não serão desmontados adequadamente; portanto, na próxima inicialização, você poderá obter logs como este:
Quando o sistema desliga porque o usuário pressionou o botão liga / desliga, você obtém logs como este:
Somente quando o sistema é encerrado em ordem, você obtém logs como este:
Quando o sistema é desligado devido ao superaquecimento, você recebe logs como este:
Se você possui um no-break e está executando um daemon para monitorar a energia e o desligamento, obviamente deve verificar seus registros (o NUT registra / var / log / messages, mas o apcupsd registra / var / log / apcupsd *)
Notas
*: Aqui está a descrição da
last
sua página de manual:Usamos
head
para manter os 10 eventos mais recentes etac
invertemos a ordem para não ficarmos confusos pelo fato de as últimas impressões do evento mais recente para o menos recente.fonte
tac
comandoAlguns arquivos de log possíveis para explorar: (encontrei um sistema Ubuntu, mas espero que eles estejam presentes na maioria dos sistemas Linux / Unix)
Novamente, esses arquivos de log estão presentes em um sistema Ubuntu, portanto, os nomes de arquivos podem ser diferentes. O
tail
comando é seu amigo.fonte
Simplifique usando a
last
exibição das entradas de desligamento do sistema e execute alterações de nível e filtragemshutdown
ereboot
:fonte
cat foo | grep bar
vsgrep bar foo
, parece que o último é capaz de se filtrar.Não é totalmente satisfatório
Eu tinha uma necessidade semelhante no Debian 7.8 e observe que basicamente não há mensagens claras e explícitas no log, o que é um pouco surpreendente.
O Grep through
/var/log
informaria a hora em que a máquina foi desligada, mostraria o desligamento adequado dos daemons etc., mas não o motivo inicial.As outras soluções mencionadas (
last -x
) não ajudaram muito.Como funciona
Leitura
/etc/acpi/powerbtn-acpi-support.sh
que inclui:Observe que um texto explícito é fornecido como parâmetro do
shutdown
comando. Eu esperaria que essa string fosse registrada automaticamente pelo programa de desligamento.Ajustando para melhores logs
De qualquer forma, para receber uma mensagem explícita, coloquei o texto abaixo (como root) em um
/etc/acpi/powerbtn.sh
executável recém-criado comchmod a+x /etc/acpi/powerbtn.sh
Fazer dessa maneira provavelmente fará uma mudança mais duradoura que a modificação
/etc/acpi/powerbtn-acpi-support.sh
. A última opção provavelmente perderia seu efeito na próxima atualização do pacoteacpi-support-base
.Observe que o Ubuntu 14.04 faz diferente (
/etc/acpi/powerbtn.sh
já existe com conteúdo diferente doacpid
pacote). Além disso, o Debian 8 provavelmente faz diferente. Sinta-se livre para oferecer variantes.Lucro!
E agora, quando o botão de energia é pressionado, uma linha como abaixo aparece no
/var/log/messages
,/var/log/syslog
e/var/log/user.log
:Agora essa é uma mensagem explícita no log.
fonte
acpi-support-base
e osacpid
pacotes. Eu não testei a mim mesmo. Você pode elaborar em qual distribuição e versão ela gera benefícios?Tenho apenas uma ideia desajeitada, mas talvez funcione para você: insira o comando
last
e verifique as informações de login de todos os usuários. em seguida, filtre os usuários com a permissão necessária parahalt
efetuar o login naquele momento. então verifique o.bash_history
arquivo deles para ver se eles entraram ou não.fonte
No meu caso, tive um problema de superaquecimento e encontrei o logon / var / log / syslog por um 'grep shut *' na pasta / var / log.
O erro registrado foi este:
fonte
Apenas inseri isso na minha VM KVM (onde eu me perguntava se uma reinicialização do host fazia um desligamento limpo dos convidados), encontrei o que precisava
/var/log/auth.log
(além delast -x shutdown
mostrar o mesmo). Lá estas linhas apareceram:last -x
mostra essas linhas, observe que elas estão sendo impressas na ordem mais recente (por exemplo, leia a última linha primeiro e depois suba), mas devido à redefinição do relógio (23:56 antes da inicialização, 23:55 depois) também evidente nas linhas anteriores, a ordem parece um pouco desconcertante:Da minha parte, verificando se os convidados são desligados corretamente quando o host é inicializado, eu também poderia entrar (ssh) em um dos convidados e ficar lá quando eu inicializava o host, colocando estas linhas no terminal:
fonte
aliás, o desligamento de um script,
o script deve fornecer todos os parâmetros, etc. ao executável de desligamento original,
MAS: o script deve registrar aqueles
fonte
last -x
)no meu caso, foi o software de ups que desligou o servidor.
fonte