Exécuter le script avant d'arrêter


21

Quand j'arrête mon ordinateur, je veux montrer certaines tâches en attente que je dois faire avant de quitter le bureau ... J'ai fait une application locale pour gérer ces tâches, en gros je veux juste exécuter une commande, et arrêter après avoir tué l'application exécutée.


Peut être utile pour les futurs utilisateurs: askubuntu.com/a/747556/295286
Sergiy Kolodyazhnyy

Réponses:


7

Vous pouvez ajouter votre commande au fichier /etc/gdm/PostSession/Defaultavant la exit 0ligne.


Si je vais à l'option "Déconnexion", il s'exécute très bien, mais si j'appuie sur Arrêt, l'écran de déconnexion violet ubuntu apparaît presque instantanément et exécute le script (dans l'écran où apparaît le logo ubuntu avec 5 petites boules). (testé avec sleep 20).
juanefren

La boîte de dialogue "Etes-vous sûr de vouloir arrêter" se trouve ici: / usr / lib / indicator-session / gtk-logout-helper et une partie du paquet indicateur-session qui est écrite en C / C ++ donc c'est assez difficile à modifier. Vous pourriez avoir plus de chance de demander à une liste de diffusion gnome-gourou;)
LassePoulsen

6

Vous pouvez le faire en créant un script dans /etc/rc0.d (pour l'arrêt) et /etc/rc6.d (pour le redémarrage). Pour ce faire, exécutez:

gksu gedit /etc/rc0.d/K01mycustomscript

Modifiez votre script d'arrêt dans l'éditeur de texte, puis exécutez:

sudo chmod +x /etc/rc0.d/K01mycustomscript

Et si vous souhaitez qu'il s'exécute également au redémarrage, exécutez ceci:

sudo cp /etc/rc0.d/K01mycustomscript /etc/rc6.d/K01mycustomscript

Source: ce fil de discussion


D'après sa description, il semble qu'il souhaite invoquer une application graphique, il a donc besoin d'accéder au xserver. Dans ce cas, l'utilisation des scripts init ne fonctionne pas.
sepp2k

1
Ouais ... comme le dit @ sepp2k, le script s'exécute en dehors de xserver :(
juanefren

4

Cela ressemble à une question pour superuser.com pour moi. Quoi qu'il en soit, après quelques recherches sur Google, j'ai trouvé comment exécuter un script à la déconnexion? qui dit d'ajouter le script à $ HOME / .bash_logout.

Si cela ne fonctionne pas, ajoutez

$HOME/.bash_logout

dans / etc / gdm / PostSession / Default pour exécuter correctement le script de déconnexion.

Étant donné qu'avant l'arrêt, l'utilisateur est de toute façon déconnecté, cela devrait couvrir les deux bases.


1
Comme il ne veut probablement pas que le script s'exécute à chaque fois, il se déconnecte de bash (c'est-à-dire chaque fois qu'il ferme une fenêtre de terminal), je ne pense pas que ce soit une bonne idée d'écrire la commande dans .bash_logout. Cependant, l'écrire dans PostSession / Default me ​​semble une bonne idée.
sepp2k

Vous avez déjà ce fichier, mais il semble qu'il ne fonctionne pas (j'ai mis le sommeil 20 et il n'a pas attendu l'arrêt.)
juanefren

.bash_logout ne s'exécute pas lorsque vous fermez un terminal, il ne s'exécute que lorsque vous vous déconnectez d'une session de connexion au terminal (c'est-à-dire si vous vous déconnectez d'un realATS) et non lorsque vous vous déconnectez de gnome.
LassePoulsen

Pourquoi serait-ce une question pour le superutilisateur? Si la question concerne Ubuntu, c'est sur le sujet.
NN

2

Si vous le faites, ./app-to-run && sudo shutdown -h nowl'ordinateur doit s'arrêter une fois l'application exécutée.


1
Ce serait un arrêt très grossier. Vous préférez plutôt appeler le script d'arrêt du bureau.
txwikinger

Le sudo peut demander à l'utilisateur de taper le mot de passe au cas où l'application à exécuter est assez longue ... Il ne s'arrêtera donc jamais.
2012

1

Presque la même réponse que Tommy Brunn mais sans risquer de se bloquer en lui demandant le mot de passe root:

sudo sh -c "./app-to-run; shutdown -h now"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.