Colocando script na inicialização do Linux (Ubuntu/Debian)
Essa dica é para quem não sabe como colocar um script na inicialização do sistema. Como se sabe, em distros como o Slackware basta você colocar seu script ou chamá-lo através do /etc/rc.d/rc.local.
Porém o Ubuntu e Debian não tem esse arquivo, então como fazer??? Muito simples. Basta você criar seu script dentro da pasta /etc/init.d. Exemplo:
# joe /etc/init.d/meuscript
#!/bin/bash
echo "Olá mundo"
Agora é só dar a permissão para execução:
# chmod 755 /etc/init.d/meuscript
Quase pronto, agora é só colocar para inicializar junto com o sistema:
[5] Comentário enviado por jamerfay em 04/05/2007 - 10:20h
Pode até ter. só que, fui adicionar alguns scripts no /etc/init.d/rc.local
e toda hora que eu reiniciava o ubuntu server.
os scripts ñ funcionavam
tinha que rodar todos manualmente, daí graças a este post, consegui fazer com que eles funcionem normalmente. (Detalhe no ubuntu desktop sempre funcionou)
só no no server não deu!! Vai saber né...
Abraços!!!
[6] Comentário enviado por aureaa em 15/08/2007 - 16:30h
Bem... no meu caso funcionou a dica do Phylipe. Eu tava tendo que rodar manualmente e o rc.local não trazia comentário algum. Mesmo assim coloquei a regra dentro dele e nada. Depois coloquei o caminho do script e nada. Enfim... Valeu pela dica. Preciso de dicas de política. Alguém pode me dar? Sou iniciante ainda.
[7] Comentário enviado por ebertonraider em 23/08/2007 - 21:33h
como que eu faço para colocar esses comandos no script do ubuntu:
sudo ifconfig eth1 192.168.0.1
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[11] Comentário enviado por faroots_gnu em 09/08/2008 - 15:42h
Vamo lá!! to com um problema no DEBIAN, configurei servidor (compartilhei conexao via IPtable) tenho DHCP, Squid, SSH, nxserver... estao funcionando perfeitamente, mas só funcionam quando eu digito os comandos no shell, ja coloquei os comandos no rc.local e tambem criei um script dessa mesma forma como esta descrito aqui, mas os serviços não inicializam com o sistema operacional, estou ficando doido pra fazer funcionar, (toda vez que reinicio tenho que fazer isso manualmente) alguem me ajuda?? obrigadoo!!
[12] Comentário enviado por felipezs em 11/09/2008 - 10:59h
como é feita a execução dos scripts?
por ordem alfebética?Pois eu criei um sript para desabilitar o cups e o proftpd q por enquanto nao vou usar.
Abraços
[14] Comentário enviado por felipe.antonio em 09/09/2010 - 10:16h
Outra coisa que pode acontecer é o seguinte:
Se tiver alguma chamada de script errada ou algum comando errado no seu /etc/rc.local ele não vai funcionar. Por exemplo:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
# Sobe o script do firewall
nohup /etc/link/nfirewall
iptables -t nat -A POSTROUTING -o eth0 "-J" MASQUERADE
# Sobe o script para implementar tolerancia a falhas.
nohup /etc/link/gwping
exit 0
O segundo comando está escrito errado o que vai acarretar erro no código, logo o segundo e o terceiro comando não serão executados. Para prevenir isto basta adicionar & no final de cada chamada de script, que faz o seu script rodar em background.
[16] Comentário enviado por kinokrek em 27/10/2010 - 16:32h
Artigo útil e funcional, só seria melhor se houvesse outros capítulos explicando melhor a inicialização do sistema. Mas qualquer um com boa vontade e paciência (pouca) pode encontrar mais sobre isso.
### Acrescentando informações ###
Uso a distribuição Sabayon, baseada em Gentoo. A estrutura de boot parece ser parecida com a do Ubuntu (não sou muito experiente para afirmar isso).
O meu único problema foi com o último comando do artigo (# update-rc.d meuscript defaults ).
Seguindo a documentação do Gentoo, na qual vale a pena dar uma lida pois detalha o processo de inicialização ( http://www.gentoo.org/doc/pt_br/handbook/handbook-x86.xml?part=2&chap=4 ), descobri que o comando é outro:
# sudo rc-update add nomedoscript default
Esse comando é essencial, pois, como é dito na documentação, o init não executa todos scripts contidos em /etc/init.d. O que tal comando faz a adicionar o script desejado à lista de execução. Esta pode ser listada com o comando:
#sudo rc-update show
Só para enriquecer um pouco, uma observação que pode ser muito útil a alguns é que o tal "default" do comando é um runlevel, ou "estágio de execução", que pode ser tanto substituído quanto adicionado a outros: boot, default, nonetwork, single e shutdown. Cada um destes tem sua especificidade, que é detalhada no link citado. Por exemplo, "default" é indicado para operações rotineiras. Se quiséssemos que o script fosse executado ao encerramento do sistema, o comando seria:
# sudo rc-update add nomedoscript shutdown
Este comentário foi só para adicionar informações específicas a usuários iniciantes do Gentoo, como eu. Fica também a importante dica: documentação é (quase) tudo e é a melhor fonte de informação que se pode ter.
[17] Comentário enviado por GuilhermeLista em 09/12/2012 - 13:19h
Esse é um breve script para configuração de iptables no firewall:
iniciar(){
#ativar a conexao
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -j MASQUERADE
echo "conexao ativada"
#comandos iptables...
}
parar(){
#comandos iptables que deixam o estado padra limpando as pólices, etc...
echo "0" > /proc/sys/net/ipv4/ip_forward
echo "conexao desativada"
}
case "$1" in
start) iniciar ;;
stop) parar ;;
restart) parar; iniciar ;;
*) echo "use os parametros start ou stop"
esac
exit 0
-------------------------------------------------------------------------------------
Depois crie esse arquivo no diretório:# /etc/init.d/cofiguracao_firewall
Dê permissao de execução:# chmod +x /etc/init.d/configuracao_firewall
A partir de agora vc terá que descobrir em qual nível a sua distribuição irá executar o script no meu caso ubuntu-server o meu nível é o "rc2.d "
Acesse o diretorio:# cd /etc/rc2.d/
Lá terá links os quais irão executar seus respectivos scripts ex:S15bind9,S50rsync...
Crie o seu link:# ln -s ../init.d/configuracao_firewall S21configuracao_firewall
A letra "S" indica que irá executar o camando start do seu script e numero 21 será a ordem o qual seu script será executado
Após isso é só dar um reboot e curtir seu script ^^.
Algumas referências eu retirei do livro: "Servidores Linux" de Calos Morimoto.
Att.
[18] Comentário enviado por martinss em 16/12/2014 - 10:09h
Pessoal, eu fiz exatamente igual o artigo e consegui o resultado esperado em um script python na Raspberry PI. O problema é que meu script tem um loop infinito, fazendo capturas quando recebe um comando de botão e eu não consigo sair do script!!!
Quero alterar o script mas não tenho mais controle do terminal. Alguém poderia me ajudar?
[20] Comentário enviado por thiagosinesio em 15/05/2018 - 16:17h
Pessoal, estou tendo um problema que uma máquina específica da rede não está montando as pastas compartilhadas automaticamente. Minha rede tem 30 máquinas e todas funcionam, só essa máquina que da pau, aí todo dia precisa rodar o comando "sudo mount -a" manualmente.
Tentei colocá-lo no /etc/rc.local antes do exit 0, mas não funcionou.
[21] Comentário enviado por Eudes87 em 08/10/2019 - 15:08h
Eu sou iniciante no linux, esta é uma das opções de inicialização de programas pelo Debian/Ubuntu, consegui iniciar o automaticamente o meu programa através desta opção, porém este post poderia ter sido mais detalhado, esta é a minha critica construtiva.
Estou amando aprender linux e me arrependo de não ter feito isso à anos atrás, espero contribuir com a página em breve também.
Abraço e viva o linux!