Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 25-05-2020 18:28:26

brutux
Membre
Inscription : 12-04-2020

La commande shutdown

Bonjours à tous !

Sur un Raspberry (Raspbian Buster) j’utilise un soft en graphique pour lire de la musique qui , quand on le ferme, sauvegarde l’etat de la liste de lecture dans un fichier, ça prend deux à trois secondes.
Je voulais que son extinction se fasse automatiquement au lancement de commande d’arrêt système. Après avoir essayé de lancer le soft comme un service ou de lancer un script à l’arrêt du système j’utilise finalement un script qui ferme mon programme puis lance un shutdown -h now.

J’aurai pensé que la commande shutdown utilisée basiquement dans un terminal ou autre aurait suffit, quel envoyait un signal d’arrêt à chaque processus et surtout qu’elle attendait que tout les processus soit arrêtés mais ça ne semble pas être les cas. Elle continue sont chemin sans attendre les retardataires !

Est-ce le fonctionnement normal de shutdown?  Y a t-il un moyen d’y remédier, ajout d’un délais ou autre ?

Et y a-t-il une autre façon prévu à cette effet pour arrêter un programme GUI (et lui en laisser le temps) en même temps que le système ? Comment auriez-vous fait ?

Hors ligne

#2 25-05-2020 19:38:48

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : La commande shutdown

Tu peux essayer d'éteindre ton programme dans ton script et faire ensuite

sleep 10; shutdown -h now

L'intérêt d'attendre dix secondes puis d'éteindre c'est que on donne 10 secondes pour que ton programme s'éteigne et si il est pas éteint dans tout les cas, l'os est shutdown.

Quand tu envoie un SIGTERM au processus de ton lecteur de musique, ça fait aussi les sauvegardes de la liste de lecture ou pas ?

Car si tu le mets dans un service, par default systemd envoie un SIGTERM et ensuite si il n'est pas arrêté, le processus est SIGKILL. Le délai entre les deux par default est de 90 sec.

https://unix.stackexchange.com/question … n-shutdown

Dernière modification par naguam (25-05-2020 20:03:55)

Hors ligne

#3 25-05-2020 21:08:53

saitama-san
Membre
Inscription : 28-07-2019

Re : La commande shutdown

récupérer le PID et attendre la fin avant de lancer le shutdown
sinon, le sleep n'est pas très élégant, y a tout ce qu'il faut dans les options de shutdown

https://manpages.debian.org/stretch/man … .8.fr.html

Hors ligne

#4 25-05-2020 21:21:47

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : La commande shutdown

C'est pas élégant mais avec shutdown j'ai réussi à mettre le temps que en minutes.
Et j'ai pas trouvé de trucs clairs sur le sujet.
sleep c'est simple et efficace.

Hors ligne

#5 25-05-2020 23:27:34

brutux
Membre
Inscription : 12-04-2020

Re : La commande shutdown

Oui y a bien un sleep dans mon script et tout fonctionne bien, mais j'aurais préferé une solution plus "universelle" qu'un script perso. Avec sytemd je n'ai pas reussi à faire fonctionner une commande de sortie (= ExecStop ), avec init pareil. Au final j'en viens à penser qu'un service ne puisse bien fonctionner pour du gui.

Je m'étonne juste que shutdown n'attend pas la fin complète des processus, j'imagine que ça ferme la session x et tout ce qu'elle contient même si certains processus sont encore actifs. Ou alors si vraiment "y a tout ce qu'il faut dans les options de shutdown" comme le dit  saitama-san j'ai raté quelque chose.

Hors ligne

#6 26-05-2020 06:59:25

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-9-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : La commande shutdown

Hello
avec pkill?

pkill nomdusoft


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#7 26-05-2020 07:57:08

brutux
Membre
Inscription : 12-04-2020

Re : La commande shutdown

Pkill, kill, killall, oui tout ceci fonctionne très bien. Le soft dispose même de sa propre commande bash pour être arrêté.

Hors ligne

#8 26-05-2020 10:30:41

brutux
Membre
Inscription : 12-04-2020

Re : La commande shutdown

La nuit portant conseil... j'utilse openbox et slim en partant d'une netinstall (raspbian lite pour le coup). Il est possible que j'ai omis une configuration de session quelque part et que celle-ci ne se ferme pas proprement !!?  Je cherche...

Hors ligne

#9 26-05-2020 12:54:00

Croutons
Membre
Distrib. : Debian10 Buster
Noyau : Linux 4.19.0-9-amd64
(G)UI : Mate
Inscription : 16-12-2016

Re : La commande shutdown

en faite c'est quoi le soucis puisque plein de solution fonctionne?
J'ai pas trop compris la demande en faite , c'est pas très clair
peut être voir avec la commande sync pour être sur que le cache soit bien vidé?

Dernière modification par Croutons (26-05-2020 12:58:39)


-->les cahiers du debutant<--      WikiDF-->Découvrir les principales commandes Linux<--
L' expérience, c'est le nom que chacun donne à ses erreurs. Oscar Wilde

En ligne

#10 26-05-2020 13:05:03

brutux
Membre
Inscription : 12-04-2020

Re : La commande shutdown

Je cherche à savoir si c'est le fonctionnement normal de la commande  shutdown de ne pas attendre la fin des processus avant d'éteindre une machine.

Dit comme ça c'est con car la réponse est forcement non mais comme c'est le cas chez moi je cherche à comprendre pourquoi. Du coup y à pas vraiment de souci (c'est obligé pour poster ?) juste de la  curiosité et l'envie de faire les choses avec les outils à dispo.

Dernière modification par brutux (26-05-2020 13:08:37)

Hors ligne

#11 26-05-2020 14:33:58

naguam
Membre
Lieu : Quelque part
Distrib. : Plusieurs
Noyau : Ça dépend
(G)UI : La CLI il n'y a que ça de vrai!
Inscription : 13-06-2016

Re : La commande shutdown

Normalement de ce que j'ai pu lire shutdown -h qui correspond à poweroff stope les processus avant d'arrêter la machine.
Seulement la manière d'éteindre les processus, c'est d'envoyer SIGTERM au processus concerné et si il ne s'éteint pas malgré tout, SIGKILL.
Seulement si ton programme ne s'éteint pas de manière "standard" pour les save et ne neutralise pas les SIGTERM, quand shutdown va envoyer le signal SIGTERM ton programme va s'arrêter probablement sans son mécanisme de save.

Dernière modification par naguam (26-05-2020 14:34:19)

Hors ligne

#12 26-05-2020 18:58:53

brutux
Membre
Inscription : 12-04-2020

Re : La commande shutdown

Qu'entends tu par "manière "standard" pour les save et ne neutralise pas les SIGTERM" ? Si j'envoie un kill $pidduprogramme il se ferme en ayant sauvé son fichier. Il réagira à priori donc bien au SIGTERM envoyé par shutdown.
D'après le lien de ton premier message le délais par défaut entre SIGTERM et SGKILL est de 90s mais ça semble ne concerne que les services.

Hors ligne

Pied de page des forums