Bash: lancer des commandes à la fermeture d'une interface graphique Le sujet est résolu

Tout ce qui concerne la programmation.
Répondre
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

Bonjour,
J'utilise depuis peu KVM/libvirt avec l'interface graphique virt-manager. Comme je n'ai que des utilisations ponctuelles des Vm , je souhaite lancer les services.libvirtd que lorsque je lance l'interface graphique. (je n'aime pas avoir trop de services au démarrage)
J'ai bricolé le script ci-dessous pour automatiser le lancement des services avant de lancer l'interface graphique et qui les stoppent quand je quitte cette interface.
ça marche, mais il y a certainement mieux à faire.
Si vous avez des propositions plus frugales en ressources, je suis preneur.
(j'ai essayé d'autres solutions comme while kill -0 "$pid_virt_manager" mais sans résultat)

Code : Tout sélectionner

#!/bin/bash
sudo systemctl start libvirtd.service 
sudo systemctl start libvirtd-admin.socket
sudo systemctl start libvirtd-ro.socket 
sudo systemctl start libvirtd.socket 
sleep 2
#
virt-manager &
while pgrep -f "virt-manager" >/dev/null; do
    sleep 5   
done
# 
sudo systemctl stop libvirtd.service 2>/dev/null
sudo systemctl stop libvirtd-admin.socket
sudo systemctl stop libvirtd-ro.socket
sudo systemctl stop libvirtd.socket

"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Salut !

2 suggestions (pas testées)

1. Plutôt que mettre x fois sudo... dans le script exécute le script via sudo
Exemple

Code : Tout sélectionner

$ cat ./test.sh
#!/bin/bash
fdisk -l /dev/sdb
exit


$ ./test.sh
./test.sh: ligne 2: fdisk : commande introuvable

$ doas ./test.sh
Disk /dev/sdb: 298.09 GiB, 320072933376 bytes, 625142448 sectors
Disk model: 0AS             
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 95611917-287F-4D19-B830-9A956D5F1F1B

Device     Start       End   Sectors   Size Type
/dev/sdb1   2048 625141759 625139712 298.1G Linux filesystem

J'utilise doas mais c'est comme sudo


2. tu peux simplement faire : systemctl start libvirtd*

Tu peux vérifier avant :

$ systemctl list-units | grep libvirtd
et/ou
$ systemctl list-units libvirtd*
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Toi qui apprécies le Python => https://github.com/arlowhite/process-watcher

Il doit y avoir quelque-chose équivalent dans bash... ???

J'ai vu cela aussi : https://manpages.debian.org/bookworm/mo ... .1.en.html

Sinon tu as aussi notify-send je me demande si l'option -A --action ne permettrait pas d'envoyer une commande quand on clique sur la notification ?
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

Salut,
dezix a écrit : 15 déc. 2023, 21:58 J'utilise doas mais c'est comme sudo
Merci du partage, je ne connaissais pas
dezix a écrit : 2. tu peux simplement faire : systemctl start libvirtd*
Plutôt systemctl start libvirtd --all

Pour le script montré, je l'ai modifié avec systemctl mask / unmask car j'ai constaté que ces services ont la peau dure ...
dezix a écrit : 15 déc. 2023, 22:33 Toi qui apprécies le Python => https://github.com/arlowhite/process-watcher

Il doit y avoir quelque-chose équivalent dans bash... ???

J'ai vu cela aussi : https://manpages.debian.org/bookworm/mo ... .1.en.html

Sinon tu as aussi notify-send je me demande si l'option -A --action ne permettrait pas d'envoyer une commande quand on clique sur la notification ?
Je me suis probablement mal exprimé. La fenêtre graphique dont il est question est celle de virt-manager.
La boucle avec pgrep garde la main tant que le processus lié à cette fenêtre est actif. Une fois la fenêtre fermée je lance mes systemctl mask. C'est fonctionnel. Mais peut-être il y a mieux à faire (ou pas) pour économiser les ressources (la vm peut être fortement sollicitée par des compilations, je ne voudrais pas plomber ses performances)...
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

J'utilise doas mais c'est comme sudo
très intéressant son paramétrage des privilèges dans doas.conf :good:
Je vois que c'est un paquet dit de transition ... ça implique quoi juste un changement de nom de paquet? ( opendoas)
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Je tiens peut-être une bonne solution :smile:

Tout simplement :

~/.local/share/applications/virt-manager.desktop

Code : Tout sélectionner

[Desktop Entry]
Name[fr]=Gestionnaire de machines virtuelles
Name=Virtual Machine Manager
Comment[fr]=Gérer des machines virtuelles
Comment=Manage virtual machines
Icon=virt-manager
Exec=systemctl start libvirtd --all ; sleep 2 ; virt-manager && systemctl stop libvirtd --all
Type=Application
Terminal=false
Keywords[fr]=vmm;
Keywords=vmm;
Categories=System;

Qu'en penses-tu ?


Note que ça a un inconvénient : une machine virtuelle peut (continuer de) fonctionner sans le manager !
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

J'avais testé && , malheureusement ça ne convient pas car la commande virt-manager rend la main immédiatement...
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Dommage !
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Je crois qu'il faudrait aussi surveiller les PID des VM en cours d'exécution.
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

À la vue de :

Code : Tout sélectionner

# systemctl status libvirtd --all
○ libvirtd.service - Virtualization daemon
     Loaded: loaded (/lib/systemd/system/libvirtd.service; enabled; preset: enabled)
     Active: inactive (dead) since Sat 2023-12-16 09:05:17 CET; 2h 7min ago
   Duration: 2min 106ms
TriggeredBy: ● libvirtd-admin.socket
             ● libvirtd.socket
             ● libvirtd-ro.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
    Process: 966 ExecStart=/usr/sbin/libvirtd $LIBVIRTD_ARGS (code=exited, status=0/SUCCESS)
   Main PID: 966 (code=exited, status=0/SUCCESS)
      Tasks: 2 (limit: 32768)
     Memory: 18.6M
        CPU: 1.060s
     CGroup: /system.slice/libvirtd.service
             ├─1150 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
             └─1151 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper

...
Dec 16 09:05:17 deb12 systemd[1]: libvirtd.service: Deactivated successfully.
Dec 16 09:05:17 deb12 systemd[1]: libvirtd.service: Unit process 1150 (dnsmasq) remains running after unit stopped.
Dec 16 09:05:17 deb12 systemd[1]: libvirtd.service: Unit process 1151 (dnsmasq) remains running after unit stopped.
Je me pose tout de même la question du gain réel à stopper le service qui l'est quasiment si la GUI et aucune VM ne fonctionnent ?

Code : Tout sélectionner

$ PID=1150 ; doas grep "^Rss\|^Pss\|^Shared_Clean\|^Shared_Dirty\|^Private_Clean\|^Private_Dirty" /proc/${PID}/smaps |awk 'BEGIN {tot_mem=0;} {tot_mem = tot_mem + $2;} END {print tot_mem" KB";}'
5046 KB

$ PID=1151 ; doas grep "^Rss\|^Pss\|^Shared_Clean\|^Shared_Dirty\|^Private_Clean\|^Private_Dirty" /proc/${PID}/smaps |awk 'BEGIN {tot_mem=0;} {tot_mem = tot_mem + $2;} END {print tot_mem" KB";}'
3144 KB
Donc 8M de RAM utilisé sur quelle quantité totale ?


Q? y-a-t-il une commande donnant directement l'usage mémoire pour un PID donné ?
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

dezix a écrit : 16 déc. 2023, 11:29 Je me pose tout de même la question du gain réel à stopper le service qui l'est quasiment si la GUI et aucune VM ne fonctionnent ?
Je viens de refaire mes tests et ... je constate que j'ai encore eu des hallucinations :fool: .
Je cours après le vent, c'est ma spécialité. En fait, dans ma psychose j'ai vu que les services étaient activés au démarrage de mon Pc :crazy: . Il en est manifestement rien !
J'ai dû me tromper de bocal quand j'ai préparé l'infusion du soir... Bah au moins, j'aurais appris des trucs.
Affaire résolu! jusqu'à ma prochaine hallu...
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Rassure-toi, tu n'es pas seul :033:
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

@dezix
Re,
dis-moi je me penche sur doas, mais quels que soient mes essais je rencontre une exception.
J'ai pourtant l'impression que ma déclaration du fichier doas.conf est juste. :unknw:

Code : Tout sélectionner

fab@fabien:~$ ls -l /etc/doas.conf
-rw-r--r-- 1 root root 45 16 déc.  23:06 /etc/doas.conf
fab@fabien:~$ cat /etc/doas.conf
permit nopass fab cmd apt apt-get as root

 
fab@fabien:~$ doas apt update
doas: syntax error at line 1
fab@fabien:~$ 
Qu'en est il?
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

J'en dis qu'il te faudrait peut-être un peu de repos ?

Code : Tout sélectionner

$ man doas.conf

....

     The rules have the following format:

           permit|deny [options] identity [as target] [cmd command [args ...]]

et tu as la commande : doas -C /etc/doas.conf
pour vérifier la syntaxe du fichier.
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Le manuel doas.conf précise qu'il est préférable de fournir les chemins complets des commandes ...
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

Rho, En plus de mon habitude de courir après le vent, je suis dyslexique...
dezix a écrit : 17 déc. 2023, 09:47 J'en dis qu'il te faudrait peut-être un peu de repos ?
Tu as tout à fait raison. Actuellement, je suis en déficit chronique de sommeil. Et ça, ce n'est malheureusement pas une blague!

Merci bien, si tu n'étais pas là il faudrait t'inventer :drinks:
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

C'est sympa, merci.
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

dezix a écrit : 17 déc. 2023, 10:03 Le manuel doas.conf précise qu'il est préférable de fournir les chemins complets des commandes ...
Si l'on fait que comme ça, on ne peut avec doas qu'appeler la cmd qu'avec son chemin complet. ..

....
sinon je constate que si je fais "doas apt update" le retour est en anglais. Avec sudo ou depuis su - le retour est en français. Je ne vois pas de configuration possible pour modifier ce comportement** :sorry: .

En tout cas, c'est une belle découverte. J'ai enlevé sudo du groupe de l'user. Au-delà de l'aspect sécuritaire ça me permettra de mieux retrouver les actions importantes en utilisant le compte root... (mes .bash_history sont souvent remplacés, et mes sudo vite oubliés)

Edit: ** ce n'est pas un souci majeur. Inutile de se prendre la tête pour ça
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3546
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

MPython Alaplancha a écrit : 19 déc. 2023, 11:58 Si l'on fait que comme ça, on ne peut avec doas qu'appeler la cmd qu'avec son chemin complet. ..
Je suppose qu'il faut tester chaque nouvelle ligne, donc si on préfère la syntaxe courte, d'abord avec elle et passer à la longue si problème.

Autre point qui rejoint :
MPython Alaplancha a écrit : 19 déc. 2023, 11:58 sinon je constate que si je fais "doas apt update" le retour est en anglais. Avec sudo ou depuis su - le retour est en français. Je ne vois pas de configuration possible pour modifier ce comportement**
en passant les variables de ton choix avec setenv { VAR=valeur } ; p.ex: setenv { LANG=fr_FR.UTF-8 } ou setenv { LANG=C.UTF-8 } pour les scripts

Pour régler des problèmes avec les commandes (courtes) il faudra probablement mieux définir la variable PATH

Perso j'en fais un usage minime
**Simple Utilisateur** -- Debian stable - XFCE
Anon001
Membre
Membre
Messages : 95
Inscription : 15 nov. 2023, 13:39
Localisation : Dans un futur désert!
Status : Hors-ligne

:008:
"Il est plus facile d'imaginer la fin du Monde que la fin du capitalisme "
Acheter plus pour jeter plus!
Répondre