Muitos anos atrás, podemos escrever nosso script de inicialização /etc/rc.local
. Depois que todos os serviços do sistema forem carregados, seu script será executado.
Agora, usamos o systemd, não temos rc.local
mais. Systemd inicia o serviço paralelo. Você pode escrever seu próprio serviço para executar um rc.local`, mas não pode garantir que ele seja executado após todos os serviços do sistema terem sido carregados.
Existe uma forma de fazer isso? Ou temos que usar Before
e After
no arquivo de serviço systemd?
Respostas:
No systemd, é aconselhável usar
Before=
eAfter=
solicitar seus serviços de maneira adequada em relação aos outros.Mas desde que você pediu uma maneira sem usar
Before
eAfter
, você pode usar:o que
man systemd.service
explica:fonte
/proc/sys/kernel/modules_disabled
para1
no final do processo de inicializaçãoRealmente depende da sua definição de "inicializado". Suponho que você queira que ele seja executado imediatamente após o início do getty. Para fazer isso, você precisa adicionar seu serviço ao
/etc/systemd/system/getty.target.wants/
diretório Você também deve garantir que seu arquivo esteja usando código semelhante aos outros serviços neste diretório. Para executar um serviço personalizado na inicialização e desligamento (apenas emite um sinal sonoro na campainha da minha placa-mãe), use o seguinte script em/etc/systemd/system/getty.target.wants/service_name.service
/usr/bin/myinitscript.sh
é executável e tem um shebang no início.Observe que nem tudo será iniciado neste momento da inicialização, mas este é o momento em que o prompt de logon aparece para o usuário
Embora isso use
Before=
eAfter=
, era para mim muito mais compreensível e realmente funciona; Não achei a resposta acima informativa o suficiente. Isso também permite que você use ambosExecStart=
eExecStop=
, em vez de se limitar a umType=simple
serviço semelhante.fonte
Não estou familiarizado com os detalhes ou o ArchLinux, mas aqui está como gerenciar o systemd em geral.
Bem, basicamente systemd é uma coleção de scripts em /etc/init.d/ que são apontados por links simbólicos em /etc/rcX.d, em que X é o número do nível de execução. Os links simbólicos possuem o seguinte formato:
Onde:
Portanto, se você deseja que seu script seja executado por último na sequência de inicialização, faça o seguinte:
runlevel
ls /etc/rc<target runlevel>.d/
e escolha um número de dois dígitos que seja maior que qualquer outro já existente.update-rc.d
para Debian ouchkconfig
similar ao Fedora ou manualmente, crie um link simbólico /etc/rc.d/S para o seu script init.fonte