Colocando script na inicialização do Linux (Ubuntu/Debian)

Publicado por Phylipe Venancio Soares em 14/12/2006

[ Hits: 297.099 ]

Blog: http://www.energiageradores.com

 


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:

# update-rc.d meuscript defaults

É isso aí galera, felicidade a todos!

Outras dicas deste autor

Habilitando NumLock em todos os terminais na inicialização

Desligando fonte ATX com APM no Slackware

Ativando a conta root no Ubuntu

Instalando Limewire / Limeware no Ubuntu 7.04 Feisty

Atualizando Ubuntu 6.10 para 7.04

Leitura recomendada

Instalação de driver legado Broadcom BCM4311 HP Compac

Aumentando a resolução de vídeo no Lubuntu rodando no VirtualBox

Fazendo o HAL funcionar no Arch Linux

Temas de login GDM e MDM HTML5 no Linux Mint 16

Configurando teclado em notebook Lenovo T400

  

Comentários
[1] Comentário enviado por jwendell em 14/12/2006 - 17:28h

Cara, não fala isso. Existe o /etc/rc.local

[2] Comentário enviado por tuxSoares em 14/12/2006 - 17:57h

Mas isso eh para fazer uma coisa mais elaborada... tipo fazer um firewall, que vc pode criar um /etc/init.d/firewall.... eh bem mais legal.

[3] Comentário enviado por jwendell em 14/12/2006 - 18:07h

Claro, concordo. Estou falando do fato de você dizer que no Ubuntu não existe um arquivo rc.local como no slack.

[4] Comentário enviado por hccelo em 15/12/2006 - 10:58h

nas baseadas em debian existe o arquivo /etc/init.d/bootmisc.ALGUMA_COISA_q_NAO_LEMBRO, acho q é bootmisc.sh...

funciona como o rc.local...


flw!

[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

[8] Comentário enviado por tuxSoares em 25/09/2007 - 21:08h

gdit /etc/rc.local

Coloca as linhas dentro desse arquivo depois salve

Vlw

[9] Comentário enviado por bytecodesbr em 04/12/2007 - 10:51h

Basta editar o arquivo: /etc/rc.local, colocando:

# Não esquecer de colocar no final da linha o &
/etc/jakarta-tomcat-5.0.28/bin/startup.sh &
exit 0

[10] Comentário enviado por rjdiniz em 25/07/2008 - 21:18h

Phylipe Venancio Soares; Valeu d+ amigo!

[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

[13] Comentário enviado por wash em 12/06/2010 - 10:47h

no ubuntu, muito mais facil acessar os scripts de inicializacao fazendo:

sudo apt-get install rcconf

[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.

[15] Comentário enviado por dedimosantos em 19/10/2010 - 08:35h

Parabenizo o autor do artigo, pois este foi escrito de forma simples e bem inteligível, ajudou-me muito.
Obrigado!!!

[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?

Obrigado.

[19] Comentário enviado por albor em 14/10/2016 - 10:28h

Phylipe, parabéns, essa dica me salvou cara. Simples, objetivo e funcional.

[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.

Alguém tem alguma dica?

[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!



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts