Como pular o tempo limite dos anos 90 no systemd

15

É possível pular interativamente o tempo limite dos anos 90 no systemd? Por exemplo, quando aguarda a disponibilidade de um disco ou o logout do usuário? Sei que falhará eventualmente, então posso fazê-lo falhar agora? Eu odeio apenas olhando para a tela, impotente.

user7610
fonte

Respostas:

11

Você tem duas opções:

  1. Você pode definir TimeoutStopSpec=em uma UNIDADE específica para um valor específico (em segundos *) para aguardar. Você também pode configurá-lo para o infinitycaso em que o SIGKILL nunca será enviado (não recomendado, pois você pode acabar com serviços descontrolados que são difíceis de depurar).

  2. Defina DefaultTimeoutStopSec=dentro /etc/systemd/system.conf(ou user.conf, ou em um dos *.ddiretórios) como um valor padrão que todas as UNIDADES que não TimeoutStopSpec=especificaram usarão. O surdo para essa configuração é os anos 90 que você normalmente vê.

Referências da página de manual:

  • man systemd.service para TimeoutStopSpec=
  • man systemd-system.conf para DefaultTimeoutStopSec=

* systemd também aceita especificações de tempo, por exemplo, "2min 3s". Isso é amplamente descrito no homem.

grochmal
fonte
9
Isso não é interativo. Quando o systemd já está em contagem regressiva nos anos 90, é tarde demais para fazer essas alterações e sou forçado a ficar sentado impotente.
user7610
@JiriDanek - isso ocorre porque o systemd não é interativo, não deve ser. Seu processo tty (no qual você vê os anos 90) é executado como filho do init (sytemd), ou seja, o processo que mostra (getty) os anos 90 é filho do processo que os conta (systemd). Além disso, o systemd ignora a maioria dos sinais. O systemd não deve ser controlado por um usuário aleatório na frente de um tty (isso seria um grande risco de segurança).
grochmal 16/09/16
4
Eu sou principalmente um usuário de desktop, por isso tenho a tendência de ver as coisas de maneira diferente. Lembra da impressora da filha de Torvalds ? Muitas inadequações de design podem ser justificadas por preocupações de segurança.
user7610
@JiriDanek - systemd não é uma preocupação , seria um vetor de ataque real. Se você pudesse apontar um sinal correto no momento certo, poderia (como usuário comum) desativar um serviço do sistema (por exemplo, SELinux). Basta entrar em /etc/systemd/system.con e adicionar DefaultTimeout = 3. Ou, melhor, corrija o serviço que está falhando. O fato de que algum serviço sempre falha não é um design ruim do systemd, é um design ruim da pessoa que escreveu o arquivo da unidade.
grochmal
No meu caso específico, o gravador do arquivo da unidade é inocente. Acabei de digitar um erro ao copiar e colar um UUID do disco. Simplesmente achei irritante ter que esperar um minuto e meio antes de o systemd desistir de montar isso e me deixar entrar no sistema e resolver o problema. O longo tempo limite faz sentido aqui. Exceto quando o administrador sabe que não.
User7610
7

Não é possível. Systemd não é interativo.

user7610
fonte
6

Você pode descomentar nas /etc/systemd/system.conflinhas:

DefaultTimeoutStartSec=90s
DefaultTimeoutStopSec=90s

E mude o valor para o que você considera apropriado.

Msegade
fonte
7
Mesmo que a outra resposta, isso não é interativo. Quando o systemd já está em contagem regressiva nos anos 90, é tarde demais para fazer essas alterações e sou forçado a ficar sentado impotente.
user7610