Forum Linux.redhat Problème avec systemctl reboot

Posté par  . Licence CC By‑SA.
Étiquettes :
1
27
oct.
2019

Bonjour,

sur un linux redhat 7* j'ai créé un service pour une application spécifique. Lorsque je start ou stop mon service via la commande systemctl start monservice et systemctl stop monservice je n'ai aucun problème , mais j'ai cru que la commande systemctl reboot avant l'arrêt de la machine allait arréter proprement mon service , hors ce n'est pas le cas.

Comment dois je spécifier au systéme d'arréter proprement mon service pendant la phase de reboot ? faut il redéfinir le target reboot ?

Merci d'avance pour votre aide ?

  • # Constatation

    Posté par  . Évalué à 3.

    Bonjour,

    Comment tu constates que ton service ne s'arrête pas proprement lors d'un reboot ?

    • [^] # Re: Constatation

      Posté par  . Évalué à 1.

      Bonjour,

      car dans mon script d'arret je redemarre le Service sur une autre machine . Et lors du redemarrage du serveur j'ai des erreurs sur le produit qui indique que l arret etait brutal

      Je vois que le reboot target est disabled de meme que les run Level,faut il activer le target reboot et ensuite specifier a mon Service via WantedBy ?

      [Unit]
      Description= TEST Application
      After=syslog.target network.target sshd.service

      [Service]
      Type=simple
      WorkingDirectory=/opt/xfbgw/run_time
      ExecStart=/home/test/bin/start-gw.sh
      ExecStop=/home/test/bin/stop-gw.sh
      TimeoutSec=360
      RemainAfterExit=true

      [Install]
      WantedBy=multi-user.target

      reboot.target disabled
      remote-cryptsetup.target disabled
      remote-fs-pre.target static
      remote-fs.target enabled
      rescue.target disabled
      rpc_pipefs.target static
      rpcbind.target static
      runlevel0.target disabled
      runlevel1.target disabled
      runlevel2.target enabled
      runlevel3.target enabled
      runlevel4.target enabled
      runlevel5.target static
      runlevel6.target disabled
      shutdown.target static

  • # Manque de précisions

    Posté par  . Évalué à 2.

    Bonjour,

    Que contient ton unité de service ?
    A-t-elle été activée ou non ?
    Si elle n'a pas été activée, c'est normal : systemd n'a aucun moyen de savoir qu'il doit arrêter ce service avant l’extinction ou le redémarrage de la machine.

    • [^] # Re: Manque de précisions

      Posté par  . Évalué à 0.

      Bonjour,

      car dans mon script d'arret je redemarre le Service sur une autre machine . Et lors du redemarrage du serveur j'ai des erreurs sur le produit qui indique que l arret etait brutal

      Je vois que le reboot target est disabled de meme que les run Level,faut il activer le target reboot et ensuite specifier a mon Service via WantedBy ?

      [Unit]
      Description= TEST Application
      After=syslog.target network.target sshd.service

      [Service]
      Type=simple
      WorkingDirectory=/opt/xfbgw/run_time
      ExecStart=/home/test/bin/start-gw.sh
      ExecStop=/home/test/bin/stop-gw.sh
      TimeoutSec=360
      RemainAfterExit=true

      [Install]
      WantedBy=multi-user.target

      reboot.target disabled
      remote-cryptsetup.target disabled
      remote-fs-pre.target static
      remote-fs.target enabled
      rescue.target disabled
      rpc_pipefs.target static
      rpcbind.target static
      runlevel0.target disabled
      runlevel1.target disabled
      runlevel2.target enabled
      runlevel3.target enabled
      runlevel4.target enabled
      runlevel5.target static
      runlevel6.target disabled
      shutdown.target static

      • [^] # Re: Manque de précisions

        Posté par  . Évalué à 1.

        oui mon service est bien enable, en mode manuel via systemctl stop monservice et systemctl start monservice cela fonctionne.

        c est lors du reboot que ca ne fonctionne pas

      • [^] # Re: Manque de précisions

        Posté par  . Évalué à 2.

        Pas sûr de comprendre ce que tu dis mais cela me semble plus être un service de type oneshot que simple

  • # moche

    Posté par  . Évalué à 5.

    car dans mon script d'arret je redemarre le Service sur une autre machine

    c'est très moche
    ca devrait être la machine distante qui regarde si le service local est present et s'active

    ca peut se faire via un heartbeat (un paquet envoyé par la machine locale et reçu par la distante), tant que le paquet est là, la machine attend, si le paquet n'arrive pas, le service s'active.

    ainsi si la machine locale plante ou le reseau tombe le service repart ailleurs, meme si ton script de reboot n'est pas joué

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.