Wykonaj skrypt przed zamknięciem w Ubuntu

5

Kiedy zamykam komputer, chcę pokazać pewne oczekujące zadania, które muszę wykonać przed opuszczeniem biura.

Mam lokalną aplikację do zarządzania tymi zadaniami, więc po prostu chcę uruchomić polecenie i zamknąć się po zabiciu uruchomionej aplikacji.

Próbowałem już z tymi opcjami:

/etc/gdm/PostSession/Default

Działa to tylko wtedy, gdy wybiorę opcję LogOut zamiast Shutdown.

/etc/rc0.d/K01mycustomscript

Wykonaj skrypt po zabiciu X.

$HOME/.bash_logout

Wygląda na to, że nic nie robi.

./app-to-run && sudo shutdown -h now

Nie podoba mi się to z dwóch powodów: monituje o hasło sudo i nie mogę użyć przycisku zamykania laptopa.

Używam Ubuntu 10.04.

juanefren
źródło
Czy to naprawdę kiedy się zamykasz, czy masz na myśli, kiedy wylogowujesz się z GUI?
David Z
Czy którakolwiek z odpowiedzi działała dla Ciebie? Jeśli tak, czy „zaakceptujesz” jeden?
Adam Monsen,
Nikt nie działał, myślę, że najlepszą drogą jest modyfikacja okien „Zamknij komputer”, ale myślę, że wymagałoby to ponownej kompilacji Gnome. Szukałem zmiany zachowania przycisku SHutDown, ale nie znalazłem sposobu na uruchomienie mojej aplikacji.
juanefren

Odpowiedzi:

1

Możesz utworzyć skrypt inicjujący w /etc/init.d/, a następnie skonfigurować za pomocą chkconfig, na którym poziomie pracy chcesz go uruchomić. Nigdy nie zrobiłem tego, co chcesz, ale zacznę na tej trasie.

Patkos Csaba
źródło
1
  • /etc/rc0.d/K01mycustomscript może być konieczne /etc/rc0.d/S01mycustomscript
  • upewnij się, że jest wykonywalny ( chmod 755 /etc/rc0.d/K01mycustomscriptlub chmod 755 /etc/rc0.d/S01mycustomscript)
  • spróbuj zalogować się: dodaj wiersz logger 'mycustomscript START'na początku skryptu, a logger 'mycustomscript END'na końcu zamknij, a następnie poszukaj wiadomości w dzienniku/var/log/messages
  • zauważ, że konwencją jest zamiast tego tworzenie skryptu start / stop /etc/init.d/, a następnie tworzenie dowiązań symbolicznych do tego skryptu z odpowiednich katalogów /etc/rc*.d lub użycie narzędzia takiego jak chkconfiglub update-rc.dutrzymanie dowiązań symbolicznych (patrz wikipedia „Init” strona)
  • zobacz to podobne pytanie
Adam Monsen
źródło
1

Sprawdź /etc/rc0.d/README- mówi

The scripts in this directory are executed once when entering
runlevel 0.

The scripts are all symbolic links whose targets are located in
/etc/init.d/ .

Generally it is not necessary to alter the scripts in this directory.
Their purpose is to stop all services and to make the system ready
for shutdown.

Musisz utworzyć skrypt w, /etc/init.da następnie dowiązać symbolicznie, aby /etc/rc0.d/skrypty działały podczas zamykania.

Chen Levy
źródło
A co to mówi? Czy możesz rozszerzyć swoją odpowiedź, aby uwzględnić tam najważniejsze informacje? Twój post jest obecnie oznaczony jako „niskiej jakości”. Dzięki!
slhck
0
  • Umieść gdzieś swój skrypt wykonywalny /etc/init.d- zalecane.
  • Utwórz symboliczne łącze z tego miejsca /etc/rc0.d, zaczynając od S(aby uruchomić ten skrypt, gdy dojdziesz do poziomu 0.
  • Zakładam, że maszyna będzie czekać na zakończenie działania tego skryptu przed wyłączeniem, chociaż nigdy tego nie testowałem.
joep
źródło
0

działa / etc / gdm / PostSession / Default sposób:

musisz „naprawić” gdm (lub mdm w moim przypadku) na początku skryptu:

/etc/init/mdm.conf

linia 15: zatrzymaj na poziomie działania [016]

DO:

zatrzymaj się po uruchomieniu poziomu uruchamiania rc [016]

Marc Schildt
źródło