Demorando demais para desligar? Veja como investigar e consertar desligamento demorado no Linux

29 de outubro de 2020

Seu sistema Linux está demorando muito para desligar? Aqui estão as etapas que você pode seguir para descobrir o que está causando o atraso no desligamento e corrigir o problema.

Espero que você esteja um pouco familiarizado com o conceito de sigterm e sigkill.

Quando você desliga seu sistema Linux, ele envia o sigterm e educadamente pede que os processos em execução parem. Alguns processos se comportam mal e ignoram o sigterm e continuam em execução.

Isso pode causar um atraso no processo de desligamento, pois o sistema irá aguardar que os processos em execução parem por um período de tempo predefinido. Após este período de tempo, ele envia o sinal de eliminação para forçar a parada de todos os processos em execução restantes e desliga o sistema. Eu recomendo ler sobre sigterm vs sigkill para entender a diferença.

Na verdade, em alguns casos, você veria uma mensagem como 'a stop job is running' na tela preta.

Se o seu sistema está demorando muito para desligar, você pode fazer o seguinte:

  • Verifique qual processo / serviço está demorando muito e se você pode removê-lo ou reconfigurá-lo para se comportar corretamente.
  • Altere o período de espera padrão antes que o sistema force a interrupção dos processos em execução. (Gambiarra)

Estou usando o Ubuntu aqui, que usa o systemd. Os comandos e etapas aqui são válidos para qualquer distribuição Linux que use o systemd (a maioria usa).

Título "Linux demorando demais para desligar?"

Verifique quais processos estão causando um desligamento demorado no Linux

Se você quiser descobrir o que há de errado, deve verificar o que aconteceu no último desligamento. Use este comando para obter o poder de 'Eu sei o que você fez na última sessão' (trocadilho intencional):

Comandos para usar no terminal

journalctl -rb -1

O comando journalctl permite que você leia os logs do sistema. Com as opções -b -1 você filtra os registros da última sessão de inicialização. Com a opção -r, os logs são mostrados em ordem cronológica inversa.

Em outras palavras, o comando journalctl -rb -1 mostrará os logs do sistema pouco antes de seu sistema Linux ser desligado pela última vez. Isso é o que você precisa para analisar o problema de desligamento prolongado no Linux.

Nenhum registro? Aqui está o que você deve fazer

Se não houver registros, certifique-se de que sua distribuição usa o systemd.

Mesmo em algumas distribuições do Linux com systemd, os logs não são ativados por padrão.

Certifique-se de que /var/log/journal existe. Se não, crie-o:

Comandos para usar no terminal

sudo mkdir /var/log/journal

Você também deve verificar o conteúdo do arquivo /etc/systemd/journald.conf e certificar-se de que o valor de Storage está definido como auto ou persistent.

Você encontrou algo suspeito nos logs? Existe um processo/serviço que se recusa a parar? Em caso afirmativo, investigue se você poderia removê-lo sem efeitos colaterais ou se poderia reconfigurá-lo. Não vá removendo coisas cegamente aqui, por favor. Você deve ter conhecimento do processo.

Acelere o desligamento no Linux reduzindo o tempo limite de parada padrão (Correção rápida)

O período de espera padrão para o desligamento é geralmente definido em 90 segundos. Seu sistema tenta forçar a interrupção dos serviços após esse período.

Se quiser que seu sistema Linux desligue rapidamente, você pode alterar esse período de espera.

Você encontrará todas as configurações do systemd no arquivo de configuração localizado em /etc/systemd/system.conf. Este arquivo deve estar preenchido com muitas linhas começando com #. Eles representam os valores padrão das entradas no arquivo.

Antes de qualquer coisa, convém fazer uma cópia do arquivo original.

Comandos para usar no terminal

sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.orig

Procure DefaultTimeoutStopSec aqui. Provavelmente, deve ser definido para 90 seg.

#DefaultTimeoutStopSec=90s

Você deve alterar este valor para algo mais conveniente, como 5 ou 10 segundos.

DefaultTimeoutStopSec=5s

Se você não sabe como editar o arquivo de configuração no terminal, use este comando para abrir o arquivo para edição no editor de texto padrão do seu sistema (como o Gedit):

Comandos para usar no terminal

sudo xdg-open /etc/systemd/system.conf

Alterando configurações de tempo de desligamento Ubuntu!

Não se esqueça de remover o # antes de DefaultTimeoutStopSec. Salve o arquivo e reinicie o sistema.

Isso deve ajudá-lo a reduzir o atraso de desligamento do sistema Linux.

Problema do watchdog!

O Linux tem um módulo chamado watchdog que é usado para monitorar se certos serviços estão sendo executados ou não. Ele pode ser configurado para reiniciar os sistemas automaticamente se eles forem interrompidos devido a um erro de software.

Não é comum usar o Watchdog em sistemas de desktop porque você pode desligar ou reinicializar o sistema manualmente. Geralmente é usado em servidores remotos.

Primeiro, verifique se o watchdog está em execução:

Comandos para usar no terminal

ps -af | grep watch*

Se o watchdog estiver em execução em seu sistema, você pode alterar o valor de ShutdownWatchdogSec de 10 minutos para algo inferior no arquivo de configuração do systemd /etc/systemd/system.conf.

Você conseguiu consertar o longo desligamento?

Espero que este tutorial tenha ajudado você a investigar e corrigir o problema de desligamento prolongado em seu sistema. Deixe-me saber nos comentários se você conseguiu consertar. description: '---' title: 'Demorando demais para desligar? Veja como investigar e consertar desligamento demorado no Linux' media_order: 'change-shutdown-time-settings-ubuntu.png,linux-demorando-demais-para-desligar.png,linux-demorando-demais-para-desligar.png' revised: true taxonomy: assunto:

  • tutorial header_image_file: linux-demorando-demais-para-desligar.png feed: limit: 10 twitterenable: true twittercardoptions: summary articleenabled: true facebookenable: true original_title: 'Shutdown Taking Too Long? Here’s How to Investigate and Fix Long Shutdown Time in Linux' original_link: '/demorando-demais-para-desligar-veja-como-investigar-e-consertar-desligamento-demorado-no-linux'

Seu sistema Linux está demorando muito para desligar? Aqui estão as etapas que você pode seguir para descobrir o que está causando o atraso no desligamento e corrigir o problema.

Espero que você esteja um pouco familiarizado com o conceito de sigterm e sigkill.

Quando você desliga seu sistema Linux, ele envia o sigterm e educadamente pede que os processos em execução parem. Alguns processos se comportam mal e ignoram o sigterm e continuam em execução.

Isso pode causar um atraso no processo de desligamento, pois o sistema irá aguardar que os processos em execução parem por um período de tempo predefinido. Após este período de tempo, ele envia o sinal de eliminação para forçar a parada de todos os processos em execução restantes e desliga o sistema. Eu recomendo ler sobre sigterm vs sigkill para entender a diferença.

Na verdade, em alguns casos, você veria uma mensagem como 'a stop job is running' na tela preta.

Se o seu sistema está demorando muito para desligar, você pode fazer o seguinte:

  • Verifique qual processo / serviço está demorando muito e se você pode removê-lo ou reconfigurá-lo para se comportar corretamente.
  • Altere o período de espera padrão antes que o sistema force a interrupção dos processos em execução. (Gambiarra)

Estou usando o Ubuntu aqui, que usa o systemd. Os comandos e etapas aqui são válidos para qualquer distribuição Linux que use o systemd (a maioria usa).

Título "Linux demorando demais para desligar?"

Verifique quais processos estão causando um desligamento demorado no Linux

Se você quiser descobrir o que há de errado, deve verificar o que aconteceu no último desligamento. Use este comando para obter o poder de 'Eu sei o que você fez na última sessão' (trocadilho intencional):

Comandos para usar no terminal

journalctl -rb -1

O comando journalctl permite que você leia os logs do sistema. Com as opções -b -1 você filtra os registros da última sessão de inicialização. Com a opção -r, os logs são mostrados em ordem cronológica inversa.

Em outras palavras, o comando journalctl -rb -1 mostrará os logs do sistema pouco antes de seu sistema Linux ser desligado pela última vez. Isso é o que você precisa para analisar o problema de desligamento prolongado no Linux.

Nenhum registro? Aqui está o que você deve fazer

Se não houver registros, certifique-se de que sua distribuição usa o systemd.

Mesmo em algumas distribuições do Linux com systemd, os logs não são ativados por padrão.

Certifique-se de que /var/log/journal existe. Se não, crie-o:

Comandos para usar no terminal

sudo mkdir /var/log/journal

Você também deve verificar o conteúdo do arquivo /etc/systemd/journald.conf e certificar-se de que o valor de Storage está definido como auto ou persistent.

Você encontrou algo suspeito nos logs? Existe um processo/serviço que se recusa a parar? Em caso afirmativo, investigue se você poderia removê-lo sem efeitos colaterais ou se poderia reconfigurá-lo. Não vá removendo coisas cegamente aqui, por favor. Você deve ter conhecimento do processo.

Acelere o desligamento no Linux reduzindo o tempo limite de parada padrão (Correção rápida)

O período de espera padrão para o desligamento é geralmente definido em 90 segundos. Seu sistema tenta forçar a interrupção dos serviços após esse período.

Se quiser que seu sistema Linux desligue rapidamente, você pode alterar esse período de espera.

Você encontrará todas as configurações do systemd no arquivo de configuração localizado em /etc/systemd/system.conf. Este arquivo deve estar preenchido com muitas linhas começando com #. Eles representam os valores padrão das entradas no arquivo.

Antes de qualquer coisa, convém fazer uma cópia do arquivo original.

Comandos para usar no terminal

sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.orig

Procure DefaultTimeoutStopSec aqui. Provavelmente, deve ser definido para 90 seg.

#DefaultTimeoutStopSec=90s

Você deve alterar este valor para algo mais conveniente, como 5 ou 10 segundos.

DefaultTimeoutStopSec=5s

Se você não sabe como editar o arquivo de configuração no terminal, use este comando para abrir o arquivo para edição no editor de texto padrão do seu sistema (como o Gedit):

Comandos para usar no terminal

sudo xdg-open /etc/systemd/system.conf

Alterando configurações de tempo de desligamento Ubuntu!

Não se esqueça de remover o # antes de DefaultTimeoutStopSec. Salve o arquivo e reinicie o sistema.

Isso deve ajudá-lo a reduzir o atraso de desligamento do sistema Linux.

Problema do watchdog!

O Linux tem um módulo chamado watchdog que é usado para monitorar se certos serviços estão sendo executados ou não. Ele pode ser configurado para reiniciar os sistemas automaticamente se eles forem interrompidos devido a um erro de software.

Não é comum usar o Watchdog em sistemas de desktop porque você pode desligar ou reinicializar o sistema manualmente. Geralmente é usado em servidores remotos.

Primeiro, verifique se o watchdog está em execução:

Comandos para usar no terminal

ps -af | grep watch*

Se o watchdog estiver em execução em seu sistema, você pode alterar o valor de ShutdownWatchdogSec de 10 minutos para algo inferior no arquivo de configuração do systemd /etc/systemd/system.conf.

Você conseguiu consertar o longo desligamento?

Espero que este tutorial tenha ajudado você a investigar e corrigir o problema de desligamento prolongado em seu sistema. Deixe-me saber nos comentários se você conseguiu consertar.

Confira também a versão original desse post em inglês
Propaganda
Blog Comments powered by Disqus.
Propaganda