web-dev-qa-db-fra.com

Il suffit de les exécuter au démarrage. Systemd

Ubuntu 19.04 Salut, j'ai un bogue avec systemd J'ai un fichier launch-server.service qui a

[Unit]
Description=LaunchServer
After=network.target

[Service]
WorkingDirectory=/home/aborigen/Launcher/LaunchServer/build/libs
Type=notify
User=aborigenserver
Group=Sudo
NotifyAccess=all
Restart=always

ExecStart=/usr/bin/screen -DmS launchserver /usr/Java/jdk1.8.0_221/bin/Java -Xmx128M -javaagent:LaunchServer.jar -jar LaunchServer.jar
ExecStop=/usr/bin/screen -p 0 -S launchserver -X eval 'stuff "stop"\015'
[Install]
WantedBy=multi-user.target

L'algorithme de mes actions est le suivant:

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo nano launch-server.service

créant ainsi ce fichier et collant les paramètres ci-dessus

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl daemon-reload
  2. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl status launch-server.service et en réponse:

● launch-server.service - LaunchServer Lost Paradise
Chargé: chargé (/etc/systemd/system/launch-server.service; désactivé; préréglage fournisseur: activé)
Actif: inactif (mort)

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl enable launch-server.service

Créé le lien symbolique /etc/systemd/system/multi-user.target.wants/launch-server.service →/etc/systemd/system/launc h-server.service.

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl status launch-server.service

● launch-server.service - LaunchServer Lost Paradise
Chargé: chargé (/etc/systemd/system/launch-server.service; activé; préréglage fournisseur: activé) Actif: inactif (mort)

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl start launch-server.service

Le travail pour launch-server.service a échoué car le service n'a pas effectué les étapes requises par la configuration de son unité. Voir "systemctl status launch-server.service" et "journalctl -xe" pour plus de détails.

  1. aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl status launch-server.service

aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl status launch-server.service

● launch-server.service - LaunchServer Lost Paradise
   Loaded: loaded (/etc/systemd/system/launch-server.service; enabled; vendor preset: enabled)
   Active: failed (Result: protocol) since Mon 2019-07-29 12:45:50 EEST; 2h 49min ago
 Main PID: 2496 (code=exited, status=0/SUCCESS)

июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Service RestartSec=100ms expired, scheduling restart.
июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Scheduled restart job, restart counter is at 5.
июл 29 12:45:50 aborigenserver systemd[1]: Stopped LaunchServer Lost Paradise.
июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Start request repeated too quickly.
июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Failed with result 'protocol'.
июл 29 12:45:50 aborigenserver systemd[1]: Failed to start LaunchServer Lost Paradise.
aborigen@aborigenserver:/etc/systemd/system$ chmod +x /home/aborigen/Server/start.sh
aborigen@aborigenserver:/etc/systemd/system$ Sudo systemctl start start-server.service
aborigen@aborigenserver:/etc/systemd/system$ Sudo systemctl reload start-server.service
Failed to reload start-server.service: Job type reload is not applicable for unit start-server.service.
  1. aborigen @ aborigenserver:/etc/systemd/system $ journalctl -xe

finalement:

-- Назначен автоматический перезапуск юнита launch-server.service, так как для него был задан
-- параметр Restart=.
июл 29 12:45:50 aborigenserver systemd[1]: Stopped LaunchServer Lost Paradise.
-- Subject: Завершена остановка юнита launch-server.service.
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Процесс остановки юнита launch-server.service был завершен.
июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Start request repeated too quickly.
июл 29 12:45:50 aborigenserver systemd[1]: launch-server.service: Failed with result 'protocol'.
-- Subject: Unit failed
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- The unit launch-server.service has entered the 'failed' state with result 'protocol'.
июл 29 12:45:50 aborigenserver systemd[1]: Failed to start LaunchServer Lost Paradise.
-- Subject: Ошибка юнита launch-server.service
-- Defined-By: systemd
-- Support: http://www.ubuntu.com/support
--
-- Произошел сбой юнита launch-server.service.
--
-- Результат: failed.

J'ai également start-server.service

[Unit]
Description=Lost Paradise Server
After=network.target
After=launch-server.service
[Service]
WorkingDirectory=/home/aborigen/Server/

User=aborigenserver
Group=Sudo

Restart=always

ExecStart=/home/aborigen/Server/start.sh
ExecStop=/usr/bin/screen -p 0 -S ServerAstrey -X eval 'stuff "stop"\015'
[Install]
WantedBy=multi-user.target

qui en conséquence:

aborigen @ aborigenserver:/etc/systemd/system $ Sudo systemctl status start-server.service

● start-server.service - Lost Paradise Server
Loaded: loaded (/etc/systemd/system/start-server.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2019-07-29 15:39:26 EEST; 20min ago
Process: 3427 ExecStart=/home/aborigen/Server/start.sh (code=exited, status=1/FAILURE)
Main PID: 3427 (code=exited, status=1/FAILURE)

июл 29 15:39:26 aborigenserver systemd[1]: start-server.service: Service RestartSec=100ms expired, scheduling restart.
июл 29 15:39:26 aborigenserver systemd[1]: start-server.service: Scheduled restart job, restart counter is at 5.
июл 29 15:39:26 aborigenserver systemd[1]: Stopped Lost Paradise Server.
июл 29 15:39:26 aborigenserver systemd[1]: start-server.service: Start request repeated too quickly.
июл 29 15:39:26 aborigenserver systemd[1]: start-server.service: Failed with result 'exit-code'.
июл 29 15:39:26 aborigenserver systemd[1]: Failed to start Lost Paradise Server.

Déjà le deuxième jour, je tire les cheveux de ma tête. J'ai juste besoin de les exécuter au démarrage. Aidez-moi, s'il vous plaît :)

1
Andry Kritsun

Vérifiez à nouveau si la même commande est en cours d'exécution dans le terminal. N'oubliez pas que si le service échoue, il ne redémarre parfois pas immédiatement mais attend parfois un certain temps. Le redémarrage toutes les quelques secondes va donc poser des problèmes. S'il y a trop de pannes dans un certain délai, le service est arrêté définitivement.

Tout cela est configuré dans la section Unité et tout cela, je suis sûr que vous le savez déjà. Par conséquent, je vais vous donner un exemple d'une section d'unité de travail qui a quelques surprises si vous la regardez attentivement.

[Unit]
Description=Radmon service
After=network.target
StartLimitIntervalSec=0

[Service]
Type=simple
Restart=always
RestartSec=30
User=marc
ExecStart=/usr/bin/python -u /home/marc/GMC/pyradmon.py
StandardOutput=null
StandardError=inherit

[Install]
WantedBy=multi-user.target

Je suis sûr que cela vous aidera. (Indice! Sec =)

0
Marc

Vous avez Active: failed (Result: protocol) et (code=exited, status=0/SUCCESS), qui suggère que vous exécutez un processus d'arrière-plan dans la commande systemd exec.

Si vous exécutez votre commande screen sur une console, se met-elle en arrière-plan? Cela devrait l'expliquer.

Essayez d'utiliser Type=forking, cela devrait le résoudre.

Sinon, exécutez votre commande screen au premier plan, bien que "l'attachement" puisse ne pas fonctionner comme prévu, car une unité systemd fonctionne sans terminal, donc l'écran peut échouer à ce niveau ... Peut-être Type=forking est le meilleur moyen de résoudre celui-ci ici ...

0
filbranden