Przed zamknięciem uruchom skrypt

21

Kiedy zamykam komputer, chcę pokazać pewne oczekujące zadania, które muszę wykonać przed opuszczeniem biura ... Zrobiłem lokalną aplikację do zarządzania tymi zadaniami, w zasadzie chcę po prostu uruchomić polecenie i zamknąć po zabiciu aplikacja została wykonana.

juanefren
źródło
Może być przydatny dla przyszłych użytkowników: askubuntu.com/a/747556/295286
Sergiy Kolodyazhnyy

Odpowiedzi:

7

Możesz dodać swoje polecenie do pliku /etc/gdm/PostSession/Defaultprzed exit 0wierszem.

Popey
źródło
Jeśli przejdę do opcji „Wyloguj się”, to zadziała dobrze, ale jeśli naciśniesz zamknij, pojawi się prawie natychmiastowy fioletowy ekran wylogowania i uruchomi się skrypt (na ekranie, gdzie pojawia się logo ubuntu z 5 małymi kulkami). (testowany ze snem 20).
juanefren
Okno dialogowe „Czy na pewno chcesz zamknąć” znajduje się tutaj: / usr / lib / wskaźnik-session / gtk-logout-helper oraz część pakietu sesji wskaźnikowej, która jest napisana w C / C ++, więc bardzo trudno jest edytować. Możesz mieć więcej szczęścia pytając na jakiejś
liście
6

Możesz to zrobić, tworząc skrypt w /etc/rc0.d (w celu wyłączenia) i /etc/rc6.d (w celu ponownego uruchomienia). Aby to zrobić, uruchom:

gksu gedit /etc/rc0.d/K01mycustomscript

Edytuj skrypt zamykania w edytorze tekstu, a następnie uruchom:

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

A jeśli chcesz, aby działał również przy ponownym uruchomieniu, uruchom to:

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

Źródło: ten wątek na forum

dv3500ea
źródło
Z jego opisu brzmi to tak, jakby chciał uruchomić aplikację graficzną, więc potrzebuje dostępu do Xservera. W takim przypadku użycie skryptów inicjujących nie działa.
sepp2k,
1
Tak ... jak mówi @ sepp2k, skrypt działa poza
Xserver
4

Brzmi jak pytanie do superuser.com. W każdym razie, po pewnym Googlingu znalazłem Jak uruchomić skrypt przy wylogowaniu? co mówi, aby dodać skrypt do $ HOME / .bash_logout.

Jeśli to nie zadziała, dodaj

$HOME/.bash_logout

do / etc / gdm / PostSession / Default, aby poprawnie wykonał skrypt wylogowania.

Ponieważ i tak przed zamknięciem użytkownik jest wylogowany, powinno to obejmować obie bazy.

myusuf3
źródło
1
Ponieważ prawdopodobnie nie chce, aby skrypt był uruchamiany za każdym razem, wylogowuje się z bash (tj. Za każdym razem, gdy zamyka okno terminalu), nie sądzę, że dobrym pomysłem jest zapisanie polecenia w .bash_logout. Jednak zapisanie go w PostSession / Default wydaje mi się dobrym pomysłem.
sepp2k,
Mam już ten plik, ale wygląda na to, że nie działa (położyłem sen 20 i nie
czekałem
.bash_logout nie uruchomi się po zamknięciu terminalu, uruchomi się tylko po wylogowaniu z sesji logowania terminalu (tj. po wylogowaniu realTTY), a nie po wylogowaniu z gnome.
LassePoulsen,
Dlaczego miałoby to być pytanie do administratora? Jeśli pytanie dotyczy Ubuntu, dotyczy to tematu.
NN
2

Jeśli to zrobisz, ./app-to-run && sudo shutdown -h nowkomputer powinien zostać zamknięty po zakończeniu uruchamiania aplikacji.

Tommy Brunn
źródło
1
To byłoby bardzo prymitywne zamknięcie. Zamiast tego chcesz wywołać skrypt zamykania pulpitu.
txwikinger
Sudo może poprosić użytkownika o wpisanie hasła, jeśli aplikacja do uruchomienia jest wystarczająco długa ... Więc nigdy się nie zamknie.
samb.
1

Prawie taka sama odpowiedź jak Tommy Brunn, ale bez ryzyka zawieszenia się z powodu pytania o hasło roota:

sudo sh -c "./app-to-run; shutdown -h now"
samb
źródło