Firefox nie został poprawnie zamknięty podczas wylogowywania


10

Właśnie zainstalowałem Ubuntu 14.04 beta2i spośród 25 prób wylogowania, zamknięcia lub ponownego uruchomienia, moja sesja nie zakończyła się Firefoxpoprawnie 23 razy przy wychodzeniu. Rezultatem jest strona odzyskiwania zakładek Firefox, która nigdy się nie zdarza, jeśli wcześniej ręcznie zamknę Firefox.

Ponieważ działał 2/25 razy, wydaje się, że jest to problem czasowy, w którym Ubuntu nie pozwala na zakończenie czasu Firefoksa (Ubuntu wylogowuje się po około 1-2 sekundach). Nigdy nawet nie otrzymałem „czekać na Firefoksa? okno dialogowe, które obserwowałem pod 12.04.

Więc jeśli mam rację, jak to zrobić, aby czekało? Jeśli nie, na czym polega problem i jak rozwiązać nieprawidłowe wyjście?

Nie mam doświadczenia w zarządzaniu plikami konfiguracji profilu lub sesji, a bardzo mało w bashu (rozumiem, ale kiepsko je koduję). Więc jeśli nie możesz odpowiedzieć, ale masz dobry artykuł na temat tego, jak profile / sesje działają w systemach Unix / Linux / Debian / Ubuntu (jeśli są takie same) i / lub jak wprowadzić zmiany w zdarzeniach logowania / wylogowania, bądź z tego szczęśliwy.

Edycja: Wykonałem dodatkowe testy, które dodatkowo wskazują, że to kwestia czasu

  • wmctrl -c firefox; sleep 0.5; sudo shutdown now -r działa dobrze 100%
  • wmctrl -c firefox; sleep 0.2; sudo shutdown now -r działa dobrze 50%
  • wmctrl -c firefox; sudo shutdown now -r działa dobrze 10%
  • sudo shutdown now -r& wmctrl -c firefox nigdy nie działa ...

Tak więc, jak to obejść, jak mogę zapisać wmctrl -c firefox; sleep 0.5w pliku, który przypomina .profilelub bash_logoutwylogowuje się z sesji?


Jądro nie jest cierpliwym człowiekiem. Proces Firefoksa mógł zakończyć się zbyt długo po (ładnym) zasygnalizowaniu za pierwszym razem; prawdopodobnie otrzymał kolejny (bardziej radykalny) sygnał i został brutalnie zabity . Zależy to głównie od pracy programistów, a nie od konkretnej konfiguracji systemu.
John WH Smith

@JohnWHSmith Ale powiedziałem, że wylogowanie zajmuje najwyżej 2 sekundy. Właśnie spróbowałem teraz ponownie i było to natychmiastowe (0,1 s). Logowanie ponownie przywitało mnie zawstydzonym Firefoksem. Ponieważ jest to błąd, czy powinienem to zgłosić na Ubuntu lub jądrze, a co jeśli, jak mówisz, naprawdę nie mogę nic zrobić?
sinekonata

1
Uważam, że raport o błędzie powinien być niezgodny z Firefoksem. Firefox 28 wydaje się nie zachowywać tak dobrze, jak kiedyś; czasami pozostaje uruchomiony po zamknięciu wszystkich okien i blokuje wiele rdzeni procesora.
dobey,

@dobey Jeśli to, co mówisz, jest prawdą, musi być bardzo szybkie: przetestowałem zamknięcie natychmiast (0,1 s) po naciśnięciu przycisku Firefox (x) i nie ma tam żadnego błędu. Wydaje mi się, że to, co robi Ubuntu, jest zakończone poleceniem kill procesu. Chcę tylko przypomnieć, że nie mam zainstalowanego dodatku, że wszystko jest świeże i że nie stało się to w 12.04. Wszystko, czego chcę, to sposób, aby nazwać „zamknij poprawnie działanie” zamiast „zamknij nagle”.
sinekonata

To, że okno zniknęło, nie oznacza, że ​​Firefox faktycznie wyszedł. Lub niekoniecznie oznacza to, że wyszedł czysto. Z tego, co wiemy, Firefox może się zawieszać po wyjściu z niego i nie ma to nic wspólnego z procesem wylogowywania / in-in. Czy korzystałeś z tej samej wersji Firefoksa 28 w wersji 12.04?
dobey,

Odpowiedzi:


1

Najwyraźniej nie ma dedykowanego pliku do zapisu, tak jak kiedyś. To był /etc/gdm/PostSessionpod Gnomem, ale nie jest dostępny, ponieważ najwyraźniej Jedność. A umieszczenie skryptu pod /etc/rc0.d/i /etc/rc6.d/nie będzie działać, ponieważ są one wykonywane dopiero po zamknięciu Xserver.

Istnieje jednak zdarzenie zwane gnome-save-yourselfodpalonym, gdy gnome został poproszony o wylogowanie. Jestem, jak geditna przykład, domyślnie zadzwonię. A Seamus Phelan stworzył skrypt w języku Python, aby wysłuchać zdarzenia i uruchomić skrypt, gdy zostanie złapany.

Oto link do rozwiązania: Wykonywanie skryptu przy wylogowaniu użytkownika (użytkownik inny niż root)

Postępuj zgodnie z instrukcjami, a następnie umieść skrypt, który może wyglądać następująco:

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

gdzie opcja -c delikatnie zamyka Firefoksa, podobnie jak w -cmd "Quit"przypadku gMusicBroswer. Zarówno Firefox, jak i gMusicBrowser muszą być poprawnie zamknięte, czego nie robią.

Prawdopodobnie lepszym sposobem byłoby sprawdzić zastosowanie SIGTERM, SIGKILLa kill timeoutw Ubuntu i programów, ale nie wiem wystarczająco dużo o nim.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.