Raspberry Pi é um poderoso SBC (computador de placa única) que você pode usar para vários aplicativos e projetos. Sua versatilidade reside em sua capacidade de executar todos os tipos de programas, incluindo scripts personalizados, graças em parte ao Raspberry Pi OS e outros sistemas operacionais baseados em Linux que executa.

Executar um script ou programa no Raspberry Pi é tão simples quanto encontrá-lo no sistema e executá-lo. Mas e se você quiser automatizar esse processo, talvez porque seu projeto assim o exija ou porque deseja agilizar seu fluxo de trabalho?

Uma resposta para isso é aprender a usar o systemd.

O que é Systemd?

systemd é um conjunto de componentes de sistema para configuração e comportamento de serviço em sistemas Linux modernos. É identificado com um PID (identificador de processo) de 1, pois é o primeiro processo a inicializar na inicialização do sistema. Em geral, o objetivo do systemd é ajudá-lo a gerenciar e executar programas na inicialização do sistema. E é isso que você aproveitará para lançar seu programa na inicialização do Pi.

Conforme mencionado inicialmente, existem vários métodos para executar programas na inicialização em sistemas Linux, como rc.local, cron e autostart. No entanto, o systemd é uma solução melhor do lote se você deseja iniciar programas GUI (interface gráfica do usuário), automatizar aplicativos para serem executados após o início de certos processos do sistema ou executar programas repetidamente até sua programação trabalho.

Relacionado: Como agendar tarefas no Linux com Cron e Crontab

Como usar o systemd para iniciar programas na inicialização

systemd é um método um pouco mais complicado de lançar programas na inicialização em sistemas Linux. No entanto, a flexibilidade de agendamento que ele oferece sobre outros métodos - os que mencionamos acima - supera totalmente sua complexidade em todos os aspectos.

O método systemd usa arquivos de unidade, que são como arquivos .ini que contêm informações de codificação sobre dispositivos, serviços, soquetes, destino de inicialização e outros componentes essenciais do sistema.

Os arquivos de unidade são de vários tipos. Portanto, com base no tipo de recurso que deseja declarar, você precisa escolher um tipo de arquivo de unidade de acordo. Para o propósito deste guia, no entanto, nos limitaremos aos arquivos de unidade .service, que permitem gerenciar o comportamento de inicialização de programas e scripts no sistema.

Abaixo está uma análise das etapas envolvidas no lançamento de um script / programa na inicialização usando o systemd.

Criação de um serviço

Para definir seu programa para ser executado na inicialização, crie um arquivo de unidade de serviço que dirá ao systemd qual programa executar e quando. Veja como fazer.

  1. Na janela CLI, digite sudo nano /lib/systemd/system/display.service. Você pode usar qualquer nome para o seu serviço, desde que termine com a extensão .service.
  2. No arquivo de serviço, cole as seguintes linhas de código:
    [Unidade]
    Descrição = PiCounter
    Depois de = network.target
    [Serviço]
    ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
    Reiniciar = sempre
    User = pi
    [Instalar]
    WantedBy = multi-user.target

Todas as suas opções de configuração comuns se enquadram no Unidade e Instalar seções, enquanto as opções de configuração específicas do serviço vão na seção Serviço.

Alguns dos pares de valor de diretiva acima que você pode precisar modificar incluem:

eu. Após: Ele determina quando iniciar o serviço. Configurando para network.target garante que o valor listado - network.target neste caso - comece antes de iniciar a unidade atual. No entanto, ele não direciona um relacionamento de dependência para o serviço acionar; isso é feito por meio de outras diretivas, como Deseja, Requer e Desejado.

Claro, você pode alterar esse valor para atender aos requisitos do seu projeto. Por exemplo, se você deseja que seu programa seja executado após o Raspberry Pi se conectar a uma rede, você pode usar o network-online.target valor. Você pode se referir a Documentação do Fedora no systemd para aprender mais sobre esses valores.

ii. ExecStart: Ele contém o caminho absoluto e o nome do programa / script que você deseja executar na inicialização. Portanto, dependendo do que você deseja executar, é necessário adicionar valores para ambas as diretivas.

iii. Do utilizador: Ele identifica o nome do seu Raspberry Pi. Se você mudou o nome do seu Pi, você precisa colocar esse valor para o usuário.

4. Procurado por: É a maneira mais comum de especificar o gatilho para uma unidade. Definindo-o para multi-user.target, você pode estabelecer um relacionamento de dependência que executará o programa quando o controle do sistema for entregue ao shell multiusuário.

Além disso, ele também executa seu programa antes de o sistema X-Windows de Pi iniciar, o que significa que seu programa é executado antes mesmo de você efetuar login no sistema. Caso queira que um script seja executado antes de fazer login no Raspberry Pi, isso permite que você faça isso.

As linhas de código acima funcionam para programas não-GUI. No entanto, se você deseja executar um programa GUI usando o systemd, deve adicionar o seguinte código ao seu arquivo de serviço:

[Unidade]
Descrição = PiCounter
Depois de = network.target
[Serviço]
Ambiente = Exibir =: 0
Ambiente = XAUTHORITY / home / pi / .Xauthority
ExecStart = / usr / bin / python3 /home/pi/PiCounter/display.py
Reiniciar = sempre
[Instalar]
WantedBy = multi-user.target

No par de valor de diretiva acima, tudo que você precisa alterar é o valor para o ExecStart diretiva. Substitua o do bloco de código pelo programa que deseja executar na inicialização. Depois de preencher o arquivo de serviço, clique CTRL + O para salvá-lo.

Teste o serviço

Com o serviço pronto, verifique manualmente se funciona. Para isso, digite o seguinte comando no terminal: sudo systemctl start display.service. O serviço deve executar suas instruções com sucesso.

Depois de fazer isso, encerre-o com sudo systemctl stop display.service.

Habilite o serviço

Se você conseguiu executar seu programa com sucesso usando o serviço, é hora de habilitá-lo para que execute seu programa automaticamente toda vez que você inicializar seu Raspberry Pi.

Para fazer isso, digite sudo systemctl enable display.service na janela do terminal. E uma vez feito isso, digite sudo reboot para reiniciar seu Pi.

Assim que o Raspberry Pi for inicializado, o systemd deve executar o programa de acordo com as instruções fornecidas.

Automatizando o lançamento do programa na inicialização do Raspberry Pi

Como a maioria dos sistemas Linux, o Raspberry Pi OS também permite realizar operações de várias maneiras e também permanece fiel ao agendamento de inicializações de programas. Portanto, se você deseja iniciar programas / scripts de GUI na inicialização e deseja melhor controle sobre sua programação, o systemd é claramente um método melhor.

Dito isso, porém, se você quiser uma solução mais simples ou se os requisitos do seu projeto exigirem uma programação específica, você pode verificar nosso guia para Executando um programa ou script Raspberry Pi na inicialização aprender mais.

E-mail
Folha de referências do Raspberry Pi Commands

Quer obter mais do seu Raspberry Pi? Aqui estão vários comandos úteis para navegar no terminal do Pi e programar seus pinos GPIO.

Leia a seguir

Tópicos relacionados
  • faça você mesmo
  • Raspberry Pi
Sobre o autor
Yash Wate (8 artigos publicados)

Yash é redator da equipe da MUO para DIY, Linux, Programação e Segurança. Antes de encontrar sua paixão pela escrita, ele desenvolvia para web e iOS. Você também pode encontrar seus escritos no TechPP, onde ele cobre outros setores. Além de tecnologia, ele gosta de falar sobre astronomia, Fórmula 1 e relógios.

Mais de Yash Wate

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.