Script inicialização em systemd

O systemd como padrão no Linux é uma realidade, querendo ou não. A maioria das distribuições o adotaram, e mesmo o Ubuntu que estava com o upstart resolveu nas ultimas versões usar o systemd .  Apesar de muitos estarem satisfeitos com o System V init a verdade é que ele é lento para inicializar uma maquina por rodar os scripts de inicialização em sequencia, algumas distribuições tentaram fazer gambiarras para inicializar os serviços no linux em paralelo, mas no final se chegou ao consenso que o ideal seria um serviço padronizado.  Esse post tem como intuito ensinar a fazer um script de inicialização para um serviço no padrão systemd.

O arquivo deve ser colocado dentro de /etc/systemd/system/ e ter a extenção .service .  Por exemplo criaremo o arquivo /etc/systemd/system/vde.service.  Abaixo temos a sintaxe do arquivo:

##############
[Unit]
#Descrição do serviço
Description=Virtual Distributed Ethernet
#serviço que precisa inicializar antes deste serviço, como por exemplo serviço de rede
#Ou mesmo banco de dados
After=syslog.target

[Service]

#Nome do usuario que vai executar os comandos
User=vde
#Se for apenas um processo use Type simple, caso ele gere subprocessos o Type é forking
Type=forking
#Diz qual arquivo contem o numero pid do processo pai para o systemd fazer o monitoramento
PIDFile=/var/run/vde.pid
#Comando que inicializa o serviço
ExecStart=/usr/bin/vde_switch –daemon –pidfile /var/run/vde.pid
#Comando que gera o reload do serviço
ExecReload=/usr/bin/vde_switch reload
#comando que para o serviço
ExecStop=killall -9 vde_switch

#Reinicia o serviço caso o processo do pid dentro do PIDFile morra
Restart=on-abort

[Install]
#Necessario para instalação do serviço
WantedBy=multi-user.target

##################

Script gerado precisamos habilitar o serviço para ele inicializar junto da maquina:

#systemctl enable vde.service

Se precisarmos desabilitar o serviço:

#systemctl disable vde.service

Inicializar o serviço:

#systemctl start mysqld.service

Parar o serviço:

#systemctl stop mysqld.service

 

Com isso já da para qualquer um escrever um script básico, para quem quiser se aprofundar sugiro ler as documentações disponíveis em http://www.freedesktop.org/wiki/Software/systemd/ . Mesmo que um serviço em systemd seja menos flexivel que os scripts feitos para o systemV temos que admitir que não é complexo criar um script  para um serviço em systemd e toda padronização e bem vinda para que possamos administrar varias distribuições sem maiores problemas de adaptação.

About The Author
admin Anakin Pendragon