Chciałbym uruchomić .sh
plik przy użyciu bash podczas wylogowywania i zamykania systemu Ubuntu. Przeszukałem Internet i znalazłem tylko poprawki dla KDE i GNOME. Skrypt jest prosty, muszę tylko wiedzieć, czy mogę dodać wiersz kodu do pliku „wylogowania / zamknięcia” lub czy muszę odwoływać się do niego w innym skrypcie.
30
systemd
), aby ludzie zobaczyli ją na górze.Odpowiedzi:
Aby wykonać skrypt po wylogowaniu:
Dodaj następujący wiersz:
w
/etc/lightdm/lightdm.conf
plikuMusisz ponownie uruchomić lightdm, aby ta zmiana zaczęła obowiązywać. Aby to zrobić, przejdź do tty1 za pomocą Ctrl+ Alt+ F1, zaloguj się za pomocą nazwy użytkownika i hasła i uruchom następującą komendę:
Uwaga: użyj Ctrl+ Alt+, F7aby przejść do sesji graficznej
Aby wykonać skrypt po ponownym uruchomieniu:
/etc/rc0.d
sudo chmod +x K99_script
K99
aby uruchomić się we właściwym czasie.Aby wykonać skrypt podczas zamykania:
/etc/rc6.d
sudo chmod +x K99_script
K99
aby uruchomić się we właściwym czasie.Źródła:
źródło
K
na „Kill” iS
na „Start”.K
dla poziomów uruchamiania 0, 1 i 6 orazS
dla poziomów uruchamiania 2, 3, 4 i 5; ii) nie musisz wywoływać skryptuK99_foo
, liczba określa tylko kolejność uruchamiania skryptów. Musisz wybrać taki, który jest większy niż pozostałe, jeśli chcesz, aby był uruchamiany jako ostatni; iii) Runlevel 0 nie jest przeznaczony do ponownego uruchomienia! ; To jest do zamknięcia. 6 służy do ponownego uruchomienia. iv) skrypty nie działają w/etc/rcN.d
katalogach. Powinny one zamiast tego być powiązane/etc/init.d
i powiązane z nimi/etc/rcN.d
.Jak to zrobić za pomocą systemd
Jeśli znajdziesz ten wątek po czerwcu 2016 r., Ubuntu i jego pochodne, w tym Mint, będą używać systemd do kontroli inicjalizacji i zamykania systemu. Miałem problemy ze starym podejściem, więc zbadałem systemowy sposób.
Za pomocą systemd możesz utworzyć jeden lub dwa pliki do wywoływania skryptów przy użyciu poniższych szablonów i wykonać polecenie. Prosty.
Wersja GUI
Najpierw utwórz skrypty, które chcesz uruchomić podczas uruchamiania i / lub zamykania systemu. Utworzyłem .scopening_atstart i .scfullcopy_atend.
Następnie upewnij się, że oba są wykonywalne, klikając prawym przyciskiem myszy plik, wybierając właściwości i upewniając się, że w uprawnieniach zaznaczyłeś opcję Zezwalaj na uruchamianie pliku jako programu.
Dwa utworzone przeze mnie pliki zapełniają się i zapisują zawartość ramdysku. Tworzą również plik w moim katalogu domowym, aby udowodnić, że usługa działa. Były w formie:
Następnie otworzyłem menedżera plików jako root, otworzyłem
/etc/systemd/system
i utworzyłem plik startup.service i plik save-ramdisk.service. Oczywiście możesz wybrać własne nazwy, a nazwy ogólne mogą zawierać plik startowy o nazwie johns_start.service i plik zamykania o nazwie johns_shutdown.service. Po prostu nie wybieraj istniejących nazw usług.i
Możesz użyć tych samych plików usługi, zastępując pełną ścieżkę skryptu wykonywalnego moim.
Na koniec dla każdego z nich wykonaj polecenie systemctl włącz nazwę_plików (ale bez usługi sufiksu). Więc mój pierwszy był
systemctl enable startup
Uruchom ponownie komputer raz, aby uruchomić usługi. Usługa start będzie wykonywana za każdym razem, gdy systemd wejdzie do celu dla wielu użytkowników, a usługa stop, gdy opuści cel dla wielu użytkowników. Alternatywne pliki usług z różnymi warunkami aktywacji zostaną opisane poniżej.
Wersja CLI (wiersza poleceń)
W tym opisie założono, że operujesz z katalogu domowego zamiast / home / john, w razie potrzeby korzystasz z sudo, a wybór edytora, w którym piszę vim lub svim.
Utwórz skrypty powłoki uruchamiania i zamykania w pierwszym wierszu
#!/bin/sh
i włącz ich uruchamianie za pomocąchmod +x my_new_filename
.Utwórz dwa pliki jak wyżej lub w tym przykładzie jeden plik do obsługi zadań uruchamiania i zamykania. Będę wykonywać skrypty w moim katalogu domowym, ale @don_crissti pokazał kilka alternatyw na Stack Exchange.
i skopiuj zawartość pliku:
Następnie włącz usługę za pomocą polecenia:
i uruchom ponownie system, po którym usługi będą aktywne. Polecenia
systemctl is-enabled start_and_stop
isystemctl is-active start_and_stop
mogą być używane do monitorowania nowych usług.Zmiana warunków wyzwalania dla zamknięcia
Przede wszystkim pliki używają otwartego lub zamkniętego środowiska wielu użytkowników, aby zainicjować uruchamianie skryptów. Poniższy plik wykorzystuje początek czterech potencjalnych procesów zamykania do inicjowania swoich skryptów. Dodanie lub usunięcie celów w linii Przed + linia WantedBy pozwoli ci na dokładniejsze rozróżnienie:
Ten plik został zaproponowany w odpowiedzi na Unix i Linux przez @Matthias, ale nie mogłem go uruchomić, dopóki nie dodałem sekcji Instaluj.
Ponownie edytuj skrypt
/etc/systemd/service/
i włącz go, używającsystemctl enable your_file_name
. Kiedy zmieniłem cele, użyłemsystemclt disable file_name
polecenia, a następnie ponownie je włączyłem, co dowiązało go do katalogów docelowych. Uruchom ponownie, a usługa będzie działać.źródło
man systemd.unit
utworzonymi przez użytkownika plikami można umieszczać w$XDG_CONFIG_HOME/systemd/user
innych lokalnych lokalizacjach użytkowników