Adia algumas startups do daemon até que o disco ocorra na inicialização

2

Contexto: Eu tenho um laptop rodando o Debian testing / unstable e inicializando com o systemd. Tem um disco rígido magnético portátil normal (não um SSD). A máquina é configurada para login automático quando ligada, por isso vai direto da inicialização do sistema para o carregamento da área de trabalho - que é o KDE 5, não exatamente leve.

Existem alguns daemons que gostaria de definir para iniciar somente depois que a área de trabalho estiver totalmente carregada (por exemplo, PostgreSQL, exim, apache,…) para obter uma área de trabalho utilizável mais rápida. "Área de trabalho totalmente carregada" pode ser detectada com bastante facilidade: o disco fica ocioso.

Pergunta: Existe algum recurso do systemd para iniciar daemons do sistema apenas quando a área de trabalho estiver totalmente ativada? Eu examinei os documentos e parece que não há nada depois de graphical.target . Eu sinto que devo estar perdendo alguma coisa, com todos os recursos que o systemd tem.

Algumas coisas em que pensei:

  • O PostgreSQL, pelo menos, não suporta a ativação de soquete, então isso não é opção.
  • Existem Type=idle services, mas parece que talvez espere até que sddm seja iniciado, mas não até que a área de trabalho seja carregada.
  • Grave um serviço que seja desejado por graphical.target , que verifica a cada 10s a quantidade de atividade do disco e, se não houver nenhum, usa systemctl para iniciar um local-idle.target ou similar (então existe). Tentando evitar isso.
por derobert 18.08.2015 / 14:53

1 resposta

1

Primeiro, não há tal evento como "a área de trabalho está totalmente ativa". Não há como detectar essa condição de maneira genérica.

Como você o definiria formalmente? Os mecanismos de arranque automático do próprio DE ( /etc/xdg/autostart , ~/.config/autostart etc.) não são controlados pelo systemd; não tem como saber se o DE terminou seu start-up.

Além disso, o disco pode nunca ficar ocioso. E se você ligasse o sistema rapidamente e começasse imediatamente a fazer alguma coisa?

Então, você tem que decidir o que você entende por "a área de trabalho indo para cima" e então simplesmente escreve um script que detecta essa condição e inicia outro alvo com todos os seus serviços pesados. Então é realmente a terceira opção.

    
por 20.08.2015 / 21:23