Firefox non si è chiuso correttamente quando si è disconnessi


10

Ho appena installato Ubuntu 14.04 beta2e su 25 tentativi di disconnessione, spegnimento o riavvio, la mia sessione non si è chiusa Firefoxcorrettamente 23 volte all'uscita. Il risultato è la pagina di ripristino delle schede di Firefox che non si verifica mai se mi prendo il tempo di chiudere manualmente Firefox in anticipo.

Dato che ha funzionato 2/25 volte, sembra un problema di tempo in cui Ubuntu non consente alla fine del tempo di processo di Firefox (Ubuntu si disconnette in circa 1-2 secondi). Non ho mai nemmeno ricevuto "aspetta Firefox? / Spegni comunque?" finestra di dialogo che ho osservato in 12.04.

Quindi, se ho ragione, come posso farlo in modo che aspetti? In caso contrario, qual è il problema e come posso risolvere l'uscita impropria?

Non ho esperienza con la gestione dei file di configurazione del profilo o della sessione e molto poco con bash (lo capisco ma sono pessimo nel codificarlo). Quindi, se non puoi rispondere ma hai un buon articolo su come funzionano i profili / sessioni in Unix / Linux / Debian / Ubuntu (se uguali) e / o su come apportare modifiche agli eventi di login / logout, sii felice con quello.

Modifica: ho fatto ulteriori test che indicano ulteriormente che è una questione di tempo

  • wmctrl -c firefox; sleep 0.5; sudo shutdown now -r funziona bene al 100%
  • wmctrl -c firefox; sleep 0.2; sudo shutdown now -r funziona bene 50%
  • wmctrl -c firefox; sudo shutdown now -r funziona bene il 10%
  • sudo shutdown now -r& wmctrl -c firefox non sembra mai funzionare ...

Quindi, come soluzione alternativa, come posso scrivere wmctrl -c firefox; sleep 0.5in un file simile .profileo bash_logoutper il logout della sessione?


Il kernel non è un uomo paziente. Il processo di Firefox potrebbe aver richiesto troppo tempo per terminare dopo essere stato (correttamente) segnalato per la prima volta; probabilmente ricevette un altro segnale (più radicale) e fu ucciso all'incirca . Ciò dipenderebbe principalmente dal lavoro degli sviluppatori, non specificamente dalla configurazione del sistema.
John WH Smith,

@JohnWHSmith Ma ho detto che ci vogliono 2 secondi al massimo per disconnettersi. Ho appena provato di nuovo ed è stato istantaneo (0.1s). L'accesso mi ha di nuovo accolto con un imbarazzato Firefox. Inoltre, dato che è un bug, posso segnalarlo su Ubuntu o sul kernel o cosa succede se, come dici, non posso davvero fare nulla da solo?
sinekonata,

1
Credo che la segnalazione di bug dovrebbe andare contro Firefox. Firefox 28 sembra non comportarsi come una volta; a volte rimane in esecuzione dopo la chiusura di tutte le finestre e blocca più core della CPU.
Dobey,

@dobey Se quello che dici è vero, deve essere estremamente veloce: ho provato a chiudere immediatamente (0.1s) dopo aver premuto il pulsante Firefox (x) e nessun bug lì. Sento che ciò che Ubuntu fa è vicino a un comando kill process. Voglio solo ribadire che non ho alcun componente aggiuntivo installato che tutto è aggiornato e che non è successo in 12.04. Tutto quello che voglio è un modo per chiamare "chiudere correttamente l'azione" invece di "chiudere bruscamente".
sinekonata,

Solo perché la finestra è andata via, non significa che Firefox sia effettivamente uscito. O non significa necessariamente che sia uscito in modo pulito. Per quanto ne sappiamo, Firefox potrebbe bloccarsi quando lo si esce e non ha nulla a che fare con il logout / in corso. Stavi usando la stessa build di Firefox 28 in 12.04?
Dobey,

Risposte:


1

Apparentemente non esiste un file dedicato su cui scrivere come una volta. Era /etc/gdm/PostSessionsotto Gnome ma non è disponibile da quando apparentemente Unity. E posizionare uno script sotto /etc/rc0.d/e /etc/rc6.d/non funzionerà poiché vengono eseguiti solo dopo l'arresto di Xserver.

Tuttavia c'è un evento chiamato gnome-save-yourselflicenziato quando è stato richiesto a gnome di disconnettersi. Ad geditesempio, ciò che chiamerò implicitamente. E Seamus Phelan ha realizzato una sceneggiatura in pitone per ascoltare l'evento ed eseguire la sceneggiatura quando viene catturato.

Ecco il link alla soluzione: esecuzione di script al logout dell'utente (utente non root)

Segui le istruzioni e tutto ciò che devi fare è posizionare il tuo script che potrebbe apparire così:

#! /bin/sh
#Requires wmctrl
wmctrl -c firefox;
gmusicbrowser -cmd "Quit";
exit 0;

dove l'opzione chiude -c delicatamente Firefox come fa -cmd "Quit"gMusicBroswer. Sia Firefox che gMusicBrowser devono essere chiusi correttamente, cosa che non accade.

Un modo probabilmente migliore sarebbe quello di controllare l'uso di SIGTERM, SIGKILLe kill timeoutin Ubuntu e programmi, ma io non ne so abbastanza su di esso.


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.