[FUGSPBR] script inicialização
Patrick Tracanelli
eksffa em freebsdbrasil.com.br
Qui Nov 4 15:29:19 BRST 2004
Desculpa Celso, eu nem havia visto esse e-mail, tamanha correria aqui
que bato o olho no Subject e nem lembro que eu participava da thread hehe.
Então na realidade sim, para que qualquer script sob
/usr/local/etc/rc.d/ seja executado ele deve cumprir 2 condições
obrigatórios e idealmente cumprir uma terceira de bom custome.
As duas obrigatorias são o script ter extensão .sh e ter permissão de
execussão. A terceira de bom costume/recomendada nao é obrigatoria, mas
deveria ser, que é o script reconhecer distintamente os argumentos
"start" e "stop" com instrucoes para iniciar e desligar a
aplicacao/rotina, uma vez que o FreeBSD sempre iniciara os scripts ali
com o parametro start e no momento de shutdown desligara com stop.
Tendo isso em vista, a questao e que o RCNg (RC Next Generation) adotado
no FreeBSD 5 e usado como MFC (merge from current) no FreeBSD 4 passam a
assumir esse novo padrao, entao dentre as rotinas contidas no rc.subr
estao as que verificam (booleano) se uma determinada variavel e
verdadeira ou falsa, nesse caso sambla_enable.
Ou seja o script em essencia e assim:
- caso argumento for start, executa:
- verifica se samba_enable
sobe o samba
- senao, nao faz nada
- caso argumento for stop
- verifica se e possivel pegar o pid do processo
desliga o processo
Ou seja, o script de fato é executado, mas por ser da nova linhagem de
scripts RC ele verifica se samba_enable para só depois disso habilitar o
samba. E onde ele vai verificar? Nos rc.conf que estiverem disponiveis
em rc_conf_files (outra variavel), dentre os quais /etc/rc.conf é um dos
nativamente configurados.
Se voce fizer um script manualmente que inicie uma aplicacao sem
verificar se aplicacao_enable ou nao, ai sim basta cumprir os 2
primeiros requisitos.
Hoje rc_conf_files="/etc/rc.conf /etc/rc.conf.local" ou seja esses dois
arquivos sao lidos sempre, a nao ser que voce modifique a variavel
rc_conf_files.
Para sua organizacao, voce pode adotar 2 comportamentos. Eu queria que
fosse incluso por padrao o /usr/local/etc/rc.conf nesses arquivos
nativamente, mas por N motivos e N discussoes, existem pontos favoraveis
e negativos de fazer isso, se existissem soh favoraveis ja estaria
commitado, mas os negativos ainda nao foram absorvidos hehe.
Entao para se organizar (isso vale pra mim tambem, que tenho que comecar
usar /etc/rc.conf.local ao invez do rc.conf sob /usr/local/etc/, para ME
adequar ao sistema), pense da seguinte forma:
O FreeBSD é dividido baseicamente em:
- Aplicacoes da base
- Aplicacoes de terceiros
Onde a base, nos sabemos, é o sistema operacional, tudo que for nativo,
e de terceiros em essencia aplicacoes que nao sao mantidas pelo projeto
FreeBSD e que nao fazem parte da base, ou seja nem sao contribuicoes de
terceiros - /usr/src/contrib - que estao na base. Resumindo, de
terceiros, o ports.
Aplicacoes de terceiros pelo ports sao sempre instaladas sob o prefixo
/usr/local
Enquanto as da base, ficam na base (duh), de forma que voce (eu tbm)
pode recomendadamente se acostumar a se organizar da seguinte forma
aplicacao_enable"YES"
aplicacao_flags="parametros"
aplicacao_etc="valor"
Se for da base, coloque em /etc/rc.conf
Se for de terceiros, coloque em /etc/rc.conf.local
por exemplo
firewall_enable="YES" -> /etc/rc.conf
natd_enable="YES" -> /etc/rc.conf
samba_enable="YES" -> /etc/rc.conf.local
apache2_enable="YES" -> /etc/rc.conf.local
apache2ssl_enable="YES" -> /etc/rc.conf.local
Basicamente,
base -> /etc/rc.conf
/usr/local -> /etc/rc.conf.local
Assim voce garante facilidade na administracao, backups, e
interoperabilidade de configuracoes padrao p/ aplicacoes de terceiros
entre varios sistemas operacionais, podendo inclusive centralizar os
argumentos para aplicacoes de terceiros (que estarao em um .conf
diferente) sem interferir nas configuracoes do sistema operacional, uma
vez que hostname, ifconfig_<args>, defaultouter, etc, vao em
/etc/rc.conf (e que nao podem ser comum a outros sistemas).
Nem sei se fui claro, mas tentei hehe :)
BSDServer - Fugspbr wrote:
> Oi,
>
> Isto é uma coisa boa que colocaram no BSD. Antes para desabilitar
> o início automático de um programa no rc.d, tinha que renomear ele
> ou tirar o flag de execução, enquanto o controle do início dos programas
> do BSD (inet, ssh, mail, etc) estavam no /etc/rc.conf. Agora está tudo
> centralizado ali, mais fácil de administrar.
>
> Um abraço!
>
> Rafael
>
> On Wed, 13 Oct 2004 14:27:19 -0300, Celso Viana wrote
>
>>Patrick,
>>
>>Desculpe a ignorância, mas se todos os arquivos que estão em
>>/usr/local/etc/rc.d e tem permissão de execução, não já são
>>executados na inicialização, independente de existir a linha
>>"xxx_enable="YES" em /etc/rc.conf?
--
Atenciosamente,
Patrick Tracanelli
FreeBSD Brasil LTDA.
The FreeBSD pt_BR Documentation Project
http://www.freebsdbrasil.com.br
patrick @ freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"
_______________________________________________________________
Para enviar um novo email para a lista: fugspbr em fugspbr.org
Sair da Lista: http://lists.fugspbr.org/listinfo.cgi
Historico: http://www4.fugspbr.org/lista/html/FUG-BR/
Mais detalhes sobre a lista de discussão freebsd