Najlepszy sposób na uruchamianie skryptów i poleceńzawiesić i wznowić w systemie Linux przed zawieszeniem (lub po wznowieniu) jest użycie systemowego systemu init. Wynika to z faktu, że system init współdziała bezpośrednio z jądrem i systemami zasilania. Nauka obsługi tego narzędzia pozwoli każdemu użytkownikowi uzyskać dużą kontrolę nad systemem operacyjnym Linux,
Proszę zrozumieć, że to bałagan z inicjatoremsystem na twoim komputerze może być niebezpieczny, jeśli nie wiesz co robisz. Pamiętaj, aby postępować zgodnie z instrukcjami zawartymi w tym samouczku tak dokładnie, jak to możliwe, aby uniknąć ewentualnych wpadek.
Nie każda nowoczesna dystrybucja Linuksa obsługujesystemd system inicjujący. Niektórzy używają upstart lub coś zupełnie innego. W tym samouczku skupimy się na systemd, ponieważ jest to najpopularniejszy system inicjacji. Jeśli chcesz wykonać to zadanie na czymś, co nie działa w tym artykule, rozważ instrukcje w podręczniku systemu operacyjnego.
Uwaga: Użytkownicy Debiana powinni zastąpić wszystkie instancje usr / lib / systemd / system-sleep z / lib / systemd / system-sleep /
Uruchamianie polecenia przed zawieszeniem

Aby uruchomić skrypt przed zawieszeniem, umieść dowolny plik skryptu bash w / usr / lib / systemd / system-sleep / informator. Same skrypty mogą zrobić wszystko, ale istnieje pewna składnia, której należy przestrzegać. Zacznij od otwarcia okna terminala. Używając sudo -s, uzyskaj powłokę roota.
Następnie w górę nano edytora tekstu w katalogu system-sleep:
nano /usr/lib/systemd/system-sleep/pre-suspend.sh
Dodaj shebang na początku skryptu. Dodanie tego jest krytyczne i bez niego interpreter nie będzie w stanie poprawnie odczytać kodu i poleceń.
#!/bin/bash/
Następną częścią skryptu jest „if”. To powie systemowi kontroli mocy, że „jeśli” system ma zamiar zawiesić się w celu zawieszenia, coś powinno się wydarzyć. Wklej poniższy kod:
if [ "${1}" == "pre" ]; then sh /path/to/script/to/run.sh
Zmiana sh /path/to/script/to/run.sh w skrypcie do tego, co chcesz uruchomić na komputerze z systemem Linux (lub serwerze), zanim system przestanie działać. Należy pamiętać, że wiersz bezpośrednio po „jeśli” nie musi być sh /path/to/script/to/run.sh. Możesz także użyć tego do wykonywania różnych poleceń. Dopóki bash rozpozna to jako polecenie, będzie działać.
Ostatnią częścią skryptu „przed zawieszeniem” jest dodanie części „else if”. Ten aspekt skryptu nie musi być modyfikowany, ponieważ w tym przykładzie martwimy się o zrobienie czegoś przed system przestaje działać, a nie kiedy się budzi.
elif [ "${1}" == "post" ]; then # nothing goes here fi
Po dodaniu wszystkiego do pliku naciśnij Ctrl + O aby zapisać nano.
Uruchamianie polecenia po wznowieniu

Wykonanie polecenia po wznowieniu działa podobnieuruchomić coś przed zawieszeniem. Jedyną prawdziwą różnicą jest to, że zamiast dodawać polecenie po części „if” skryptu, najważniejsza część kodu występuje po wierszu „elif”.
Aby utworzyć skrypt po wznowieniu, najpierw dodaj shebang jako pierwszy wiersz.
#!bin/bash
W następnym wierszu dodaj fragment „if” skryptu.
if [ "${1}" == "pre" ]; then # nothing goes here
Po wklejeniu tego fragmentu kodu do skryptu bash przejdź w dół i wklej sekcję „else if”.
elif [ "${1}" == "post" ]; then sh /path/to/script/to/run.sh fi
Po raz kolejny można pisać cokolwiek pod linią „elif”. Dopóki jest to normalna operacja polecenia systemd i bash go uruchomi.
Uruchamianie poleceń podczas uruchamiania i wznawiania

Jeśli chcesz uruchomić dwa przeciwne polecenia; jedenprzed zawieszeniem i jednym przy wznowieniu jest to możliwe. Oznacza to tylko dostosowanie skryptu i dodawanie wierszy zarówno w wierszu „if”, jak i w wierszu „elseif”.
Jak zwykle zacznij od opublikowania shebang w skrypcie dla tłumacza.
#!/bin/bash
Następnie wklej sekcję if kodu.
if [ "${1}" == "pre" ]; then # replace with command
Pod if, zamień „# replace with command” na dowolne polecenie, które chcesz uruchomić tuż przed awarią systemu. Następnie przejdź do sekcji „elif” i zrób to samo.
elif [ "${1}" == "post" ]; then # replace with command fi
Zapisz plik za pomocą Ctrl + O,
Aktualizowanie uprawnień i korzystanie ze skryptu
Wszystkie niezbędne polecenia znajdują się w pliku skryptu, ale zanim będzie można go uruchomić, musisz zaktualizować uprawnienia. Otwórz terminal i uzyskaj rootowanie za pomocą: su lub sudo -s. Następnie wykonaj:
chmod +x /usr/lib/systemd/system-sleep/pre-suspend.sh
Odtąd za każdym razem, gdy zawieszasz lub wznawiasz, niestandardowe polecenia w skrypcie powinny być uruchamiane.
Uwaga: masz pytania dotyczące systemd-system-sleep? Sprawdź instrukcję za pomocą man systemd-suspend.service.
Komentarze