Estou montando uma rede de sensor com ZigBee (xbee), e os dados dos sensores no final são carregados em um banco de dado mySQL num servidor. A recepção dos dados é feita por meio de um conversor de Zigbee para serial. Montei um script em python the monitora a porta serial e envia por http os dados dos sensores para o servidor. Agora preciso que o script seja chamado sempre que o servidor for ligado.Meu servidor também é utilizado como central de tv e som por isso não é garantido que sempre vai estar ligado.Procurei em vários locais na internet e parece que a melhor forma de fazer isso no Ubuntu 16 é utilizando o systemd. Várias distribuições de Linux estão utilizando este software. Saudades do autoexec.bat do DOS, muito mais fácil de conseguir fazer isso.
Passo 1 - O Script em Python
Meu script chama read_serial.py e esta no diretório /home/jairo/testesPasso 2 - Criar o arquivo de configuração do serviço
Agora vamos criar o arquivo de configuração do serviço utilizado pelo systemd :sudo nano /lib/systemd/system/sensor-hydroserver.service
E adicionamos o seguinte no arquivo:
[Unit] Description=Sensor to Hydroserver Service After=multi-user.target [Service] Type=idle ExecStart=/usr/bin/python /home/jairo/testes/read_serial.py [Install] WantedBy=multi-user.target
Este arquivo define o novo serviço chamado sensor-hydroserver, que basicamente le a porta serial e carrega o banco de dados hydroserver que tenho em casa.
Ainda falta alterar a permissão do arquivo:
Ainda falta alterar a permissão do arquivo:
sudo chmod 644 /lib/systemd/system/sensor-hydroserver.service
Passo 3 – Configurando o systemd
Uma vez definido o arquivo do servico, agora é hora e avisar o systemd sobre a sua existencia:
sudo systemctl daemon-reload sudo systemctl enable sensor-hydroserver.service
Agora ó falta reiniciar o sistema:
sudo reboot
Passo 4 – Verificação do status do serviço
Para verificar se o serviço foi carregado corretamente use:
sudo systemctl status sensor-hydroserver.serviceCaso o seu script gere algum tipo de saída no terminal, você pode encontrar ela aqui:
sudo journalctl -u sensor-hydroserver.serviceNo meu caso a saída no jornal vinha alguns minutos atrasada.