Get the Flash Player to see this player.
Logo Design by
Logo Design by FlamingText.com

quarta-feira, 3 de outubro de 2012

Rodar um script no boot usando systemd

As distribui??es GNU/Linux come?aram a substituir o SysVinit pelo systemd, com a promessa de fazer o boot ser mais r?pido e eficiente. Mas o systemd dificulta um pouco a tarefa de rodar alguns servi?os na inicializa??o do sistema.

Estes dias, precisei instalar um firewall novo, baixei o Fedora 17 e fiz o de sempre, instalei o b?sico e fui colocando apenas os servi?os necess?rios para a tarefa.

Logo percebi que o ntsysv n?o conseguia executar meu script no boot e nem o /etc/rc.local, existia mais...

A solu??o foi estudar um pouco o systemd, ent?o, descobri o seguinte:

Meu arquivo com as regras de IPtables para ser iniciado no boot, fica em /etc/ini.d/firewall, e antigamente, iniciava ele colocando no /etc/rc.local a linha: . /etc/init.d/firewall start

No systemd, os arquivos de controle ficam em /etc/systemd/system, logo criei um arquivo:

# vi /etc/systemd/system/firewall.service

Com o seguinte conte?do:

[Unit]
Description=Firewall

[Service]
Type=forking
ExecStart=/etc/init.d/firewall start
ExecStop=/etc/init.d/firewall start

[Install]
WantedBy=multi-user.target

Dei um:

# shutdown -r now

E funcionou... Melhor, ?s vezes funcionava e ?s vezes n?o...

Um dos objetivos do systemd ? fazer o sistema inciar mais r?pido, para isso, os diversos processos do S.O. n?o s?o iniciados um a um, mas em paralelo.

Em meu script, existe uma linha verificando se a placa de rede est? ativa, se n?o estiver, ele aborta o processo, o que ?s vezes acontecia se houvesse qualquer atraso no DHCP.

A solu??o mais pr?tica que encontrei, foi criar um atraso no script do firewall acrescentando a linha sleep 20, isto ?, ele inicia a execu??o, mas p?ra nessa linha por 20 segundos, tempo suficiente para que o systemd levante as placas de rede.

Acredito que tenha outras solu??es para o problema, mas de momento, ? o que est? funcionando...

Quem quiser saber mais sobre o sysmted:


View the original article here

Nenhum comentário:

Postar um comentário