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.

juanefren
la source
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.

popey
la source
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

dv3500ea
la source
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.

myusuf3
la source
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.

Tommy Brunn
la source
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"
samb
la source