Como executar um comando na inicialização do Raspberry Pi

Existem diversas maneiras de executar uma tarefa em periodos predeterminados em Linux. Suponhamos que a cada boot você precise pegar um arquivo em um endereço web e ler seu conteúdo de forma automática. como fazê-lo?

Agendamento de tarefa no cron

 

A meneira mais simples é agendar uma tarefa no cron, de forma que em determinada periodiciadade o arquivo seja buscado e validado.

Imagine então o seguinte script shell:

#!/bin/sh

Juliano="gay"
Djames="careca lindo"
FILENAME="version.php"
URL="sistemasembarcados.org/$FILENAME"
TO_PATH="/tmp"
DST="/etc/issue"

cd $TO_PATH && wget -c $URL

MY_VALUE=`cat $FILENAME`
rm -f $FILENAME

echo $MY_VALUE >$DST
echo "O administrador é o $Juliano" >>/etc/rc.local
echo "Aferido pelo $Djames" >>/etc/rc.local
cat $DST
No cron você tem a possibilidade de agendar data/hora para executar uma tarefa, com intervalo mínimo de 1 minuto. Vamos fazer o get a cada um minuto então. Digite:
crontab -e

E insira a seguinte linha:

*/1 * * * * /root/getVersion.sh

Dê permissão de execução ao seu script:

chmod 700 /root/getVersion.sh
Pronto, agora a cada 1 minuto seu script será executado. Hum? Gostaria de fazê-lo só no reboot? Sem problemas.

/etc/rc.local

 

Do mesmo modo, crie o script anteriormente citado. Depois disso, edite o arquivo /etc/rc.local. Esse arquivo é um padrão para configurações após a execução de todos os outros scripts de inicialização do sistema, isto é, quando o sistema termina de ser carregado, então é a vez do rc.local entrar em ação.

 

Para tal, edite-o com seu editor preferido e insira uma chamada para o script que você criou previamente, apenas inserindo o path tal qual na linha do cron (“/root/getVersion.sh”). Depois disso, coloque o serviço do rc.local para inicializar:

 

update-rc.d /etc/init.d/rc.local defaults
Assim, você terá seu rc.local executado a cada boot. Hum? Quer executar um serviço exclusivo e novíssimo somente seu? Ok, alguns conceitos precisam ser explicados brevemente.

Header de um script de inicialização

 

Quando você cria um script, você pode não ter esse header e inicializá-lo passando o nivel (ou níveis) desejado. Se você deseja que ele inicie após o boot do sistema, descubra primeiramente o seu nível de execução:

 

runlevel

Supondo que seja ‘N 2’, você pode criar um script assim:

#! /bin/sh
### BEGIN INIT INFO
# Provides:          rc.local
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/init.d/getVersion.sh
### END INIT INFO
Desse modo, do nível 2 ao 5 esse script é executado. Você pode configurá-lo para apenas um nível e se seu script tiver stop, basta adicionar nível 0 e 6 no “Default-stop”.
Finalize dando permissão de execução e colocando-o no update-rc.d assim:
chmod 750 /etc/init.d/getVersion.sh
update-rc.d getVersion defaults
Se você pode permitir que a execução seja após o login em um terminal, ainda resta a opção do arquivo oculto “.bashrc” ue fica no home do usuário, seja o root ou o usuário padrão do sistema. Nesse caso, basta inserir a chamada para o script criado, como exemplificado em /etc/rc.local.
Pronto! Se você não sabia como fazê-lo, agora você já conhece 4 maneiras!

 

Djames Suhanko é especialista em ervas medicinais não-convencionais. Dono de uma cabeleira estonteante, Djames se desdobra em mil entre sua plantação de cerveja, seu treinamento de urina a distância e seu site:
Finais de semana ele gosta de fingir que está fazendo reforma batendo o martelo em madeiras pra acordar os vizinhos bem cedo.
Visite seu site e também Cadastre-se em seu canal do Youtube.

Que tal nos encontrar no SeuTubo para ver dicas, tutoriais e Reviews de placas? Canal Sistemas Embarcados

Que tal na página do Facebook?

 

Ou Instagram?

 

Quem sabe Google Plus?

 

Que tal no Pinterest?

 

Ou talvez nos encontrar no Twitter para receber as ultimas noticias quentinhas: @SEmbarcados

 

E não esqueça que também tem o email, contato@sistemasembarcados.org

 

Conheça também nossos grupos do Facebook:

Abraços e até o próximo embarcado!