Em 11 de novembro de 2011 21:02, Alex <alexbbas...@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! ------------------------- Histórico: http://www.fug.com.br/historico/html/freebsd/ Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd