[FUG-BR] [OFF-TOPIC] Ordem de execução de scripts no boot

Cleyton Agapito cragapito em gmail.com
Sexta Novembro 11 21:50:35 BRST 2011


Em 11 de novembro de 2011 21:02, Alex <alexbbastos em gmail.com> escreveu:
> Prezados, boa noite.
>
> Recentemente me deparei com uma questão, que posteriormente se desdobrou em
> três, e que gostaria de saber a opinião especializada de vocês sobre o
> assunto.
>

Bom, longe de ser especializada o que pretendo colocar é uma
experiência que tive com esse assunto.

> A questão original é essa:
>
> 1 - Você criou um script que deve ser executado no boot após todos os
> outros processos terem sido executados. Qual a melhor forma de implementar
> isso?
>

Dê uma olhada no manual do rcorder(8), herança do NetBSD, vc põe no
script que ele só vai rodar depois (ou antes) de alguma condição (ter
rede, ter login, etc), o script fica um pouquinho mais complexo mas o
sistema "se vira" pra executar na ordem correta, no caso o rc.conf
precisa "habilitar" o serviço (ou script), se não tiver nada em
contrário no /etc/rc.conf são executados por default os do
/etc/defaults/rc.conf.

>
> As duas que sequenciaram são essas:
>
> 2 - Existem diferenças entre como a questão anterior pode ser tratada nos
> BSD's (incluindo o FreeBSD) e nos Linux's (se considerar todas as suas
> inúmeras distribuições, ou pelo menos as mais "famosas")?
>

Sim, o linux usa o jeito AT&T de fazer, basicamente vc tem diretórios
chamados runlevels que possuem links pro init.d, cada link começa com
um número e eles são executados nessa ordem, os scripts ficam mais
simples mas a administração mais trabalhosa, o método BSD é muito mais
inteligente (e complexo).

> 3 - Poderia ser aceita como uma possível resposta da questão 1 afirmar que
> a solução seria inserir o comando que aciona o script no arquivo
> /etc/rc.conf, *no final do arquivo*, uma vez que a ordem da disposição das
> linhas dos mesmos importa e faz diferença, como por exemplo em servidores
> de e-mail, em que é extremamente recomendável que o antivírus (Ex: ClamAV)
> seja iniciado antes do SMTP (Ex: Postfix) justamente pela ordem de
> execução/inicialização dos mesmos?
>

Não, a ordem é definida por palavras chaves no script (REQUIRE,
BEFORE, etc), o rcorder controla a sequencia de partida e termino
baseado nessas chaves independente da ordem dos rc.conf.

>
> --------------------------------------------
>
> Ressalto novamente que o script deve ser iniciado no boot, mas que deve ser
> o último a ser executado dentre todos os outros processos do boot.

Vc pode por "REQUIRE: LOGIN" no script, creio que já atenda a tua
necessidade mesmo sem garantia de ser o último, ou vc pode ir no
/etc/rc.d e rodar o rcorder em cima do que possa ser o último a ser
executado, o ideal é usar como dependência os que estão em maiúsculo,
daí não tem perigo de desativar uma coisa e parar outra.

> É preciso observar também que em nenhum momento na questão inicial foi
> especificado o S.O. em que o script seria hipoteticamente executado, por
> isso pergunto sobre Linux's também e sobre a possível aplicação de uma
> forma que existe no FreeBSD.
>

A forma de tratar a partida é completamente diferente, não se se tem
como implementar uma partida AT&T no BSD, até porque não vejo muita
utilidade. De qualquer forma se o script precisar rodar nos dois é
capaz que funcione, coloque as diretivas BSD no arquivo (que pro Linux
aparecerão como comentários) e no Linux faça os Links simbólicos
tradicionais, creio que vai dar certo.

> Obs 1: Se puderem/quiserem detalhar as respostas, fiquem à vontade.

Não sei se há necessidade de detalhar, se for o caso dê um grito que a
gente tenta melhorar :-)

> Obs 2: Admite-se que o já script tenha permissão de execução.
>

Com certeza, nos dois sistemas a permissão de execução é condição.

Abração!


Mais detalhes sobre a lista de discussão freebsd