IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

[systemd] MyScript.service & MyScript.timer


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut [systemd] MyScript.service & MyScript.timer
    Bonjour,
    Je m'intéresse de près à systemd pour palier aux "crashs" de mon script python qui me sert à télécharger la météo sur la NOAA (méthode Grib Filter).
    Il est sensible aux petites sautes d'humeurs de ce dernier
    Ça se traduit par un fichier télécharger corrompu mais ce n'est pas le sujet ici

    noaadownloader.service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    [Unit]
    Description=Script NoaaDownloader.py
     
    [Service]
    User=execution
    WorkingDirectory=/appli/python/NoaaDownloader/
    ExecStart=./NoaaDownloader.sh || python3 NoaaDownloader.py (=> ?)
    Restart=always
     
    [Install]
    WantedBy=multi-user.target
    /appli/python/NoaaDownloader/NoaaDownloader.sh contient ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/usr/bin/bash
    sudo su - execution -c "cd /appli/python/NoaaDownloader ; python3 NoaaDownloader.py > /trace/python/NoaaDownloader_$(date +\%F_\%R).log 2>&1"
    Du coup je suis un peu perdu avec les $PATH car j'ai tout sectorisé ...
    Les scripts se trouvent dans /appli/python/Noaadownloader/, le résultat issu du script se trouve dans /data/python/NoaaDownloader/ et /trace/python/ contient le log

    noaadownloader.timer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [Unit]
    Description=Run Script NoaaDownloader.sh || NoaaDownloader.py daily at 03:31:00 UTC, 09:31.00 UTC, 15:31:00 UTC, 21:31:00 UTC.
     
    [Timer]
    *-*-* 03:31:00 UTC mais aussi 09:31.00 UTC, 15:31:00 UTC et 21:31:00 UTC
     
    [Install]
    WantedBy=timers.target
    Dernière chose j'aimerais que le service s'arrête des que le script a fini de bosser
    Merci de m'éclairer sur le sujet

  2. #2
    Membre émérite
    Homme Profil pro
    Architecte cybersécurité
    Inscrit en
    Avril 2014
    Messages
    566
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte cybersécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2014
    Messages : 566
    Par défaut
    Hello,

    Sudo su - <user> est une aberration. Tu demandes à sudo de te donner le droit de pouvoir "su" de manière à ce que "su" puisse démarrer un shell de login vers l'utilisateur final.
    Utilise plutot sudo -i -u <user>.
    d'autre part, ton unité est déjà exécutée en tant que l'utilisateur "execution".

    Ton WorkingDirectory de l'unité ne concerne que ton service, pas l'unité en elle même. Donc mets un chemin absolu dans ton ExecStart si tu veux que cela marche, et enlève ton "cd" de ton script.
    Mets aussi le sudo dans ton Execstart plutôt que dans ton script si tu en as besoin.

    Bon au final voici ton unité Systemd (avec le bon type).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    [Unit]
    Description=Script NoaaDownloader.py
     
    [Service]
    User=execution
    Type=oneshot
    WorkingDirectory=/appli/python/NoaaDownloader/
    ExecStart=/appli/python/NoaaDownloader/NoaaDownloader.sh
    Restart=always
     
    [Install]
    WantedBy=multi-user.target
    Ton script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #!/usr/bin/bash
    /usr/bin/python3 ./NoaaDownloader.py > /trace/python/NoaaDownloader_$(date +\%F_\%R).log 2>&1
    Ton timer n'est absolument pas bon, utilises plutôt ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    [Unit]
    Description=Run Script NoaaDownloader.sh || NoaaDownloader.py daily at 03:31:00 UTC, 09:31.00 UTC, 15:31:00 UTC, 21:31:00 UTC.
     
    [Timer]
    OnCalendar=
    OnCalendar=*-*-* 03,09,15,21:31:00
     
    [Install]
    WantedBy=timers.target
    Un truc dans ce genre regardes quand même si tu as une erreur de syntaxe.
    D'autre part, systemctl enable sur ton timer si tu veux qu'il soit actif.

    systemctl list-timers pour vérifier que ton timer se déclenchera bien à l'heure voulue.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 320
    Par défaut
    Merci beaucoup pour les explications et les fichiers, je test ça ce soir

Discussions similaires

  1. Mon premier service Windows avec timer
    Par OmegA_MRS dans le forum Services Windows
    Réponses: 7
    Dernier message: 20/02/2012, 11h56
  2. [C# .Net 1.1] Service Windows et timer
    Par plasticgoat dans le forum C#
    Réponses: 2
    Dernier message: 11/02/2009, 14h46
  3. service windows et timer
    Par migutz dans le forum VB.NET
    Réponses: 3
    Dernier message: 18/03/2008, 10h58
  4. [C# 2.0, Service]Problème service et Timer
    Par boleduch dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/04/2006, 15h00
  5. [C#][service windows] problème de débutant avec 1 timer
    Par Nycos62 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 14/10/2005, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo