Esta é uma pergunta abrangente para todos os problemas do tipo "Uma vaga de emprego em uma startup está sendo disputada", independentemente da causa subjacente.
Para mim, isso geralmente acontece após um desligamento incorreto ou uma instalação/desinstalação de pacote ou com novo hardware.
Independentemente da causa específica e assumindo que um "trabalho de inicialização" é algum trabalho configurado para ser executado na inicialização, onde posso encontrar essa configuração ou lista de trabalhos que são programados para serem executados na inicialização (e roubam um tempo precioso de nossas curtas vidas)? Como edito/removo trabalhos de inicialização problemáticos/desnecessários (e vivo o pouco que resta da minha vida em paz)?
A mensagem "Um trabalho de inicialização está sendo executado para" parece típica para
systemd
. Com base em seus comentários, você parece não ter conhecimento algum sobresystemd
. Se você planeja administrar distribuições Linux que estão usandosystemd
, esse não é um bom estado para se estar. Então, aqui vai uma mini-cartilha sobre isso.Você encontrará a parte da configuração instalada de pacotes em
/usr/lib/systemd/system/
, as personalizações locais em/etc/systemd/system/
e partes geradas dinamicamente em/run/systemd/system/
. Qualquer arquivo de configuração em/etc/systemd/system/
substituirá um arquivo com o mesmo nome nos outros dois locais mencionados.Quando o sistema estiver em execução, você pode executar o comando
systemctl
sem nenhum parâmetro para ver uma lista de unidades systemd . Quaisquer unidades com falha devem aparecer em vermelho se seu terminal for capaz de cores, ou em negrito se não for.Note que esta lista é realmente uma representação simplificada: a forma verdadeira da lista de unidades é um gráfico de árvore de dependências. Veja
man 7 bootup
para uma descrição do processo geral de inicialização, incluindo alguns gráficos ASCII-art dele.O Systemd fornece páginas de manual para arquivos de unidade em geral
man systemd.unit
e para cada tipo de unidade comoman systemd.service
,man systemd.device
,man systemd.mount
etc.Você pode estar mais preocupado com
*.service
unidades, mas note que também há algumas unidades*.device
e*.mount
que são geradas automaticamente com base em regras do udev e alguns arquivos de configuração clássicos, como/etc/fstab
e/ou/etc/crypttab
. A geração automática é realizada por scripts geradores localizados em/usr/lib/systemd/system-generators/
.Cada script gerador fornecido pelo sistema deve ter sua própria página de manual identificando o arquivo de configuração que ele lê e quaisquer opções de linha de comando do kernel que você pode usar para, por exemplo, substituir temporariamente o gerador. Para uma correção permanente no caso de unidades geradas automaticamente, você deve ir ao arquivo de configuração que controla o respectivo gerador e remover ou corrigir quaisquer linhas de configuração obsoletas ou errôneas que possam estar causando um atraso.
Por exemplo, se uma
*.mount
unidade estiver causando um atraso na inicialização porque um compartilhamento de rede não está mais acessível, basta excluir a referência a ela/etc/fstab
ou adicionar umanoauto
opção para impedir que o gerador tente montá-la automaticamente no momento da inicialização.Para
*.service
unidades, você precisará conhecer alguns comandos:systemctl status <unit name>
listará o status atual da unidade e algumas últimas linhas de log geradas, se houver.journalctl -u <unit name>.service
mostrará os logs completos produzidos pelo serviço em questão no seu pager favorito (o padrão éless
)systemctl disable <unit name>
dirá ao systemd "Eu particularmente não quero que esse serviço seja iniciado na inicialização, mas não me oponho a que ele seja iniciado se algum outro serviço precisar dele." Se você adicionar a--now
opção, ele também interromperá o serviço imediatamente.systemctl mask <unit name>
dirá ao systemd "Eu absolutamente não quero que este serviço seja iniciado em nenhum momento: se algum outro serviço precisar dele, deixe que esse outro serviço falhe também." Se um serviço estiver em execução, pare-o primeiro antes de mascará-lo.systemctl unmask <unit name>
desfará umasystemctl mask
operação anterior.systemctl enable <unit name>
dirá ao systemd "iniciar este serviço em cada inicialização futura até que seja informado o contrário". Se você adicionar a--now
opção, ele também iniciará o serviço imediatamente.systemctl start <unit name>
esystemctl stop <unit name>
iniciará e interromperá uma unidade de serviço imediatamente, mas o novo estado não persistirá após uma reinicialização ; você precisará desystemctl enable
/systemctl disable
para isso.systemctl daemon-reload
para tornar essas alterações efetivas antes de fazer qualquer outra coisa.Agora você deve saber o suficiente sobre
systemd
ser perigoso. Por favor, use isso como um ponto de partida para aprender mais.