• # A voir

    Posté par  (site web personnel) . Évalué à 3.

    selon le système d'init

    Système - Réseau - Sécurité Open Source

  • # niveau d'init

    Posté par  . Évalué à 5.

    rcS0 ou rcS6 selon que tu veux lancer le script à l'arret ou au reboot

    et c'est alors independant de cron

  • # systemd

    Posté par  . Évalué à 4.

    À l’aide de systemd ça doit ressembler à ce qui est expliqué dans ce commentaire : https://bbs.archlinux.org/viewtopic.php?pid=1469183#p1469183

    La méthode de NeoX, qui se base sur SysV, doit fonctionner car systemd maintient une couche de compatibilité avec SysV mais je dirais qu’utiliser directement systemd doit être préférable et plus pérenne.

    Ce fil peut aussi te renseigner : http://unix.stackexchange.com/questions/39226/how-to-run-a-script-with-systemd-right-before-shutdown

    [Unit]
    Description=...
    
    [Service]
    Type=oneshot
    RemainAfterExit=true
    ExecStop=<your script/program>
    
    [Install]
    WantedBy=multi-user.target
    

    The suggested solution is to run the service unit as a normal service - have a look at the [Install] section. So everything has to be thought reverse, dependencies too. Because the shutdown order is the reverse startup order. That's why the script has to be placed in ExecStop=.

    Si je comprends bien on dit à systemd d’exécuter le script quand le runlevel la cible 'multi-user' s’arrête.

    • [^] # Re: systemd

      Posté par  . Évalué à 5.

      Si je comprends bien on dit à systemd d’exécuter le script quand le runlevel la cible 'multi-user' s’arrête.

      Pas tout à fait, les unités ont toutes par défaut (il y a une option pour désactiver ce défaut) un conflit avec le target shutdown, c'est pour ça que son ExecStop sera exécuté à l'arrêt du système, mais seulement s'il a été démarré (le RemainAfterExit est là pour qu'il ne soit pas nécessaire de mettre un ExecStart qui fait une pause indéfinie).
      Le WantedBy dans la section Install est seulement là pour qu'un "systemctl enable" ait poru effet que l'unité soit démarrée avec le target multi-user (donc dans tous démarrage normal).

      Il faut noter que ce n'est pas tout à fait équivalent à lancer un script à l'arrêt, car tu peux arrêter l' e service avec "systemctl stop" et le script sera exécuté à ce moment-là, et plus à l'arrêt (si tu ne la redémarre pas).
      Cela peut s'éviter avec l'option RefuseManualStop=true (dans la section Unit).

  • # ?

    Posté par  . Évalué à 1.

    Je vous remercie pour vos réponses, mais pour moi, c'est du chinois. Y a pas plus simple ? Je veux juste faire exécuter un copier-coller afin de sauvegarder un fichier à l'arrêt du PC. Par exemple, lorsque je clique sur Quitter, une boîte de dialogue apparaît, ce ne serait pas possible d'ajouter à la fonction qui fait apparaître la boîte mon "cp /home/…" ?

    • [^] # Re: ?

      Posté par  (site web personnel) . Évalué à 3.

      Voir avec le gestionnaire de session, en principe il y a moyen d'exécuter un script. ( postsession dans ton cas )

      Perso, je le ferais pas, rsync fonctionne trés bien pour effectuer la sauvegarde même en cours d'utilisation des données.

      Imagine ça dure trop longtemps à la sortie de session, tu vas croire à tord que c'est planté, et ça va être difficile de le stopper au cas où.

      Système - Réseau - Sécurité Open Source

Suivre le flux des commentaires

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