
Estou trabalhando em um projeto que é um EmailServer mono. Tentei adicionar um serviço ao systemd para que ele iniciasse automaticamente durante a inicialização, mas estou tendo um problema.
Eu criei o script, adicionei /lib/systemd/system/emailserver.service
e executei o ln -s /lib/systemd/system/emailserver.service /etc/systemd/system/emailserver.service
.
Eu então executei systemd reload-daemon
seguido systemctl start emailserver.service
e quando executo ps -ef |grep -i emailserver
posso ver que mono EmailServer.exe
está funcionando, tudo parecendo bem até agora.
No entanto, quando eu reinicio o servidor no /var/log/messages
arquivo, ele contém a seguinte mensagem de erro
Jul 16 19:41:02 dev-server systemd[1]: emailserver.service holdoff
time over, scheduling restart. Jul 16 19:41:02 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:03 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:03 dev-server systemd[1]: emailserver.service holdoff time over,
scheduling restart. Jul 16 19:41:04 dev-server systemd[1]:
emailserver.service holdoff time over, scheduling restart. Jul 16
19:41:04 dev-server systemd[1]: emailserver.service start request
repeated too quickly, refusing to start.
No meu script emailserver.service eu tenho o seguinte
[Unit]
Description=Boardies Email Server Startup Script
[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always
[Install]
WantedBy=multi-user.target
Estou usando o OpenSuse 12.1
O que estou fazendo de errado, obrigado por qualquer ajuda que você possa fornecer.
ATUALIZAR Descobri o que está fazendo com que o programa pare de funcionar na inicialização, mas não tenho certeza de como posso resolver esse problema. Meu programa depende de um banco de dados MySQL e acho que meu programa está iniciando antes do MySQL ser iniciado. Como posso fazer com que meu serviço não carregue até que o MySQL seja iniciado?
Responder1
Adicione After=mysql.service
ao seu arquivo de serviço (ou altere-o para o nome de serviço correto), por exemplo:
[Unit]
Description=Boardies Email Server Startup Script
After=mysql.service
[Service]
ExecStart=/home/bits/EmailServer/start.email
Restart=always
[Install]
WantedBy=multi-user.target
Observe que você não precisa colocar seu arquivo de serviço em/lib/systemd/system, é um arquivo fornecido pelo usuário e você deve apenas copiá-lo para/etc/systemd/system.
Para obter uma lista de todos os arquivos de serviço que você pode usar systemctl list-unit-files
e determinar o nome correto para o seu serviço de banco de dados (provavelmente é mysql.service ou mysqld.service)