Reduzindo o tempo limite de desligamento para "um trabalho de interrupção está em execução"

16

Eu tenho o node.js e o pm2 instalados em um Pi (Raspbian). O PM2 foi configurado para iniciar via pm2 startupe os scripts init que ele cria. Às vezes, quando eu reinicio, o desligamento é interrompido por alguns minutos:

A stop job is running for LSB: PM2 init script (... / 5min)

De vez em quando 1, o que eu suponho é que o PM2 não é desligado corretamente e trava por 5 minutos completos.

Neste sistema, eu sei exatamente quais aplicativos o PM2 está gerenciando e realmente não me importo se eles forem desligados corretamente.

Minha pergunta é: como reduzo o tempo limite de 5 minutos para, digamos, 15 segundos ou mais? Onde isso está configurado?

Eu li em um fórum que era a DefaultTimeoutStopSecchave no /etc/systemd/system.conf , então tentei definir isso para "15s", mas não teve efeito. Tentei a mesma coisa no /etc/systemd/user.conf também, mas nenhuma alteração. O tempo limite ainda está definido para 5 minutos.


1 Na verdade, eu sei especificamente o que desencadeia isso, mas os detalhes não são importantes e o efeito é inevitável.

Jason C
fonte
1
Se houver um stopscript (padrão) , você poderá reescrevê-lo para executar um forcestopou até matar, em pm2vez de um desligamento normal.
quer
@ Tigger Cheguei a uma conclusão semelhante, na verdade. Por desespero, acabei de fazer stopcom que o script init do pm2 não fizesse nada, e o deixei morrer naturalmente no desligamento. É uma solução terrível para uso geral, mas neste sistema em particular está bom. Ainda quero saber como alterar o tempo limite de 5 minutos.
Jason C

Respostas:

8

Como reduzo o tempo limite de 5 minutos para, digamos, 15 segundos ou mais?

Você re-construir systemd partir da fonte, remendar o tempo limite hardwired emsystemv-sysv-generator partir TimeoutSec=5minpara o que quiser. Ou você pede às pessoas do systemd um botão de controle em algum lugar nos cabeçalhos do Fedora / SUSE ou LSB.

Ou, por outro lado, você desiste de usar esse rcscript que possui e grava uma unidade de serviço systemd para seu serviço, cujos tempos limite podem ser definidos com uma TimeoutSec=configuração explícita , instalados com um arquivo de configurações suspensas, /etc/systemd/system/pm2.service.d/timeout.confse necessário.

Dado isto , isto , isto , isto , isto e outros, a primeira regra para migrar para o systemd se aplica aqui também.

Leitura adicional

JdeBP
fonte
15

/etc/systemd/system.conf tem uma linha

#DefaultTimeoutStopSec=90s

que pode ser descomentado e alterado

Wolfgang Fahl
fonte
Mencionei isso no meu post e que alterá-lo não tem efeito.
Jason C
definindo 45s no Arch Linux faz paradas rápida em um nvmecarro - para paralisações realmente rápidas Use Alpine Linux (não systemd)
Stuart Cardall