Por que o systemd pára meu serviço, mas não o reinicia?

0

Estou tendo alguns problemas para entender as ideias por trás do systemd. O que estou tentando fazer é configurar um serviço que deve ser executado normalmente, e isso depende do funcionamento do mariadb. Aqui está o arquivo de serviço (anônimo) que eu criei:

[Unit]
Description=My Service
Requires=mariadb.service
After=mariadb.service

[Service]
ExecStart=/usr/bin/python2.7 -u /home/serviceuser/service.py
WorkingDirectory=/home/serviceuser
User=serviceuser

[Install]
WantedBy=multi-user.target

Funcionou bastante bem, mas notei que às vezes o serviço parava espontaneamente. Depois de alguma depuração, descobri que isso coincidia com as atualizações de segurança do mariadb que estavam sendo instaladas automaticamente pelo Ubuntu. Testando isso, descobri que parar o mariadb irá parar meu serviço primeiro (o que faz sentido para mim), mas iniciar o backup do mariadb novamente não iniciará meu serviço.

Eu esperaria que o WantedBy significasse que o multi-user.target realmente gostaria que o My Service fosse executado. Portanto, o systemd deve tentar garantir que ele seja executado sempre que não houver nada que impeça isso. Coisas que impediriam que o serviço ou uma de suas dependências fosse explicitamente interrompido. Assim que essa condição de prevenção desaparecer, o systemd deverá iniciar o serviço novamente.

Qual é o erro neste raciocínio que leva ao serviço NÃO ser iniciado novamente? Como posso conseguir o comportamento que quero com o systemd?

    
por Medo42 27.02.2018 / 00:08

1 resposta

0

O mariadb é definido como dependência do Meu Serviço, portanto, iniciar também iniciará o mariadb, se não estiver em execução. Conseqüentemente, parar o mariadb também interrompe o My Service.

Mas se você reiniciar o mariadb, meu serviço não será iniciado automaticamente. Você pode gostar de ativar o My Service: systemctl enable My\ Service.service Isso irá configurá-lo para ser iniciado após a inicialização. Mas se eu estiver certo de parar, ele deve ser interrompido até a reinicialização ou reinício manual.

    
por augustin vm 27.02.2018 / 00:36