[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