Eseguire lo script prima di chiudere


21

Quando spengo il mio computer voglio mostrare alcune attività in sospeso che devo fare prima di lasciare l'ufficio ... Ho fatto un'applicazione locale per gestire quelle attività, in pratica voglio solo eseguire un comando e chiudere dopo aver ucciso l'app eseguita.


Può essere utile per i futuri utenti: askubuntu.com/a/747556/295286
Sergiy Kolodyazhnyy

Risposte:


7

È possibile aggiungere il comando al file /etc/gdm/PostSession/Defaultprima della exit 0riga.


Se vado all'opzione "Log Out", funziona bene, ma se premo shutdown appare una schermata di logout viola Ubuntu quasi istantanea ed esegue lo script (nella schermata in cui appare il logo ubuntu con 5 palline). (testato con sonno 20).
juanefren,

La finestra di dialogo "Sei sicuro di voler chiudere" si trova qui: / usr / lib / indicatore-sessione / gtk-logout-helper e una parte del pacchetto strega-sessione indicatore è scritta in C / C ++ quindi è piuttosto difficile modificare. Potresti avere più fortuna a chiedere a qualche mailing list di gnome-guru;)
LassePoulsen,

6

Puoi farlo creando uno script in /etc/rc0.d (per l'arresto) e /etc/rc6.d (per il riavvio). Per fare questo, esegui:

gksu gedit /etc/rc0.d/K01mycustomscript

Modifica lo script di arresto nell'editor di testo, quindi esegui:

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

E se vuoi che venga eseguito anche al riavvio, esegui anche questo:

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

Fonte: questo thread del forum


Dalla sua descrizione sembra che voglia invocare un'app grafica, quindi ha bisogno dell'accesso a xserver. In questo caso l'uso di init-script non funziona.
sepp2k,

1
Sì ... come dice @ sepp2k, lo script è in esecuzione all'esterno di xserver :(
juanefren

4

Mi sembra una domanda per superuser.com. Comunque, dopo aver cercato su Google ho trovato Come eseguire uno script al logout? che dice di aggiungere lo script a $ HOME / .bash_logout.

Se non funziona, aggiungi

$HOME/.bash_logout

su / etc / gdm / PostSession / Default in modo che esegua correttamente lo script di logout.

Visto che prima dell'arresto l'utente è disconnesso comunque, questo dovrebbe coprire entrambe le basi.


1
Dato che probabilmente non vuole che lo script venga eseguito ogni volta, si disconnette da bash (cioè ogni volta che chiude una finestra del terminale), non credo sia una buona idea scrivere il comando in .bash_logout. Tuttavia, scriverlo in PostSession / Default mi sembra una buona idea.
sepp2k,

Ho già questo file, ma sembra che non funzioni (ho messo il sonno 20 e non ha aspettato l'arresto.)
juanefren

.bash_logout non verrà eseguito quando si chiude un terminale, verrà eseguito solo quando si esegue il logout da una sessione di login del terminale (cioè se si disconnette un realTTY) e non quando si esegue il logout di gnome.
LassePoulsen,

Perché questa sarebbe una domanda per il superutente? Se la domanda riguarda Ubuntu è sull'argomento.
NN,

2

Se lo fai, ./app-to-run && sudo shutdown -h nowil computer dovrebbe spegnersi una volta eseguita l'app-to-run.


1
Questo sarebbe un arresto molto crudo. Preferisci invece chiamare lo script di spegnimento del desktop.
txwikinger,

Il sudo potrebbe chiedere all'utente di digitare la password nel caso l'app-to-run sia abbastanza lunga ... Quindi non si spegnerà mai.
samb

1

Quasi la stessa risposta di Tommy Brunn ma senza il rischio di rimanere con la richiesta della password di root:

sudo sh -c "./app-to-run; shutdown -h now"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.