Jak tworzyć i uruchamiać nowe jednostki serwisowe w Systemd za pomocą skryptu powłoki
- 1901
- 28
- Seweryn Augustyniak
Kilka dni temu natknąłem się na Centos 7 32-bitowa dystrybucja i poczułem chęć przetestowania go na starej 32-bitowej maszynie. Po uruchomieniu zdałem sobie sprawę, że ma błąd i tracił połączenie sieciowe, które musiałem to obrócić "w górę" ręcznie za każdym razem po rozruchu. Pytanie brzmiało, w jaki sposób mogłem ustawić scenariusz do tego zadania, działając za każdym razem, gdy uruchamiam komputer?
Cóż, jest to bardzo proste i pokażę Ci system SystemD za pomocą jednostek serwisowych. Ale najpierw małe wprowadzenie do jednostek serwisowych.
W tym artykule wyjaśnię, co „Jednostka serwisowa” W systemie jest to, jak łatwo jest utworzyć i uruchomić jeden. Spróbuję uprościć co „Cele” są, dlaczego do nich nazywamy „Kolekcje jednostek” A jakie są ich „Chce”. Wreszcie korzystamy z jednostki serwisowej, aby uruchomić własny skrypt po procedurze rozruchu.
Oczywiste jest, że Twój komputer jest przydatny ze względu na oferowane usługi, a aby mieć tę funkcjonalność, wiele usług należy wywołać jako buty komputerowe i osiąga różne poziomy. Inne usługi są powołane do wykonania, gdy komputer osiągnie, na przykład poziom ratunkowy (RunLevel 0) i inne, gdy osiągnie poziom wielu użytkowników (RunLevel 3). Możesz sobie wyobrazić te poziomy jako cele.
W prosty sposób jest zbiorem jednostek serwisowych. Jeśli chcesz przyjrzeć się jednostkom serwisowym działającym w Twoim graficzny.cel Poziom, Typ:
# Systemctl --Type = serwisWymień wszystkie jednostki serwisowe w Centos 7
Jak widać, niektóre usługi są aktywne i "działanie" Cały czas, podczas gdy inni działają jednorazowo i kończą (wychodzą). Jeśli chcesz sprawdzić status usługi, wpisz:
# Systemctl Statl Firewalld.pracaSprawdź status usług w Centos 7
Jak widać, sprawdziłem status Firewalld.praca
(wskazówka: możesz użyć automatycznego kompletu dla nazwy usługi). To mnie informuje Firewalld usługa działa cały czas i jest włączona.
Nie przegap: Jak skonfigurować usługę zapory w Centos 7
Włączone i wyłączone oznacza, że usługa zostanie na stałe załadowana lub nie, odpowiednio podczas następnego rozruchu. Z drugiej strony, aby rozpocząć i zatrzymać usługę, ma ograniczenie niniejszej sesji i nie jest to trwałe.
Na przykład, jeśli wpiszesz:
# Systemctl Stop Firewalld.Service # Systemctl Status Firewalld.pracaZarządzaj usługami w Centos 7
Możesz zobaczyć, że Firewalld.praca
jest nieaktywny (martwy), ale jest nadal włączony, co oznacza, że podczas następnego rozruchu zostanie załadowany. Więc jeśli chcemy, aby usługa została załadowana w czasie rozruchu w przyszłości. Co za wielki wniosek! Utwórzmy jeden, to łatwe.
Jeśli przejdziesz do folderu:
# cd/etc/systemd/system # ls -lPliki systemowe systemu
Możesz zobaczyć niektóre pliki linków usług jednostkowych i niektóre katalogi „Chce” celu. Na przykład: To, co cel wielu użytkowników chce zostać załadowany, gdy procedura rozruchu osiągnie swój poziom, jest wymieniony w katalogu pod nazwą /etc/systemd/system/multi-użytkownik.cel.chce/.
# LS Multi-User.cel.chce/Multi User Celuje Usługi
Jak widać usługi ale także inne cele które są również kolekcjami usług.
Zróbmy jednostkę serwisową o nazwie połączenie.praca.
# połączenie vim.praca
i wpisz następujące (hit "I"
dla trybu wstawiania), zapisz go i wyjdź (z "wyjście"
I „: WQ!"
):
[Jednostka] Opis = Wykonanie połączenia sieciowego po = sieć.Target [Service] ExecStart =/root/Scripts/Conup.sh [instalacja] WantedBy = Multi-użytkownik.celUtwórz nowe jednostki serwisowe w Centos 7
Aby wyjaśnić powyższe: utworzyliśmy jednostkę typu usługi (możesz również utworzyć jednostki typu docelowego), ustawiliśmy ją na załadowanie po załadowaniu sieć.cel (Możesz zrozumieć, że procedura uruchamiania osiąga cele z zdefiniowaną kolejnością) i chcemy, aby usługa zaczyna wykonywać skrypt bash o nazwie Conup.cii które zamierzamy stworzyć.
Zabawa zaczyna się od ostatniej części [zainstalować]. Mówi, że będzie to poszukiwane przez „Multi-użytkownik.cel". Więc jeśli włączymy naszą usługę, symboliczny link do tej usługi zostanie utworzony w środku Multi-użytkownik.cel.chce teczka! Rozumiem? A jeśli wyłączymy, że link zostanie usunięty. Tak prosty.
Po prostu włącz to i sprawdź:
# Systemctl Włącz połączenie.praca
informuje nas, że symboliczny link w Multi-użytkownik.cel.chce Utworzono folder. Sprawdź to:
# LS Multi-User.cel.chce/Włącz usługę w Centos 7
Jak widzisz "połączenie.praca" jest gotowy do następnego uruchamiania, ale musimy najpierw utworzyć plik skryptu.
# cd /root # mkdir Scripts # Scripts CD # vim conup.cii
Dodaj następującą linię w środku krzepa I zapisz to:
#!/BIN/BASH NMCLI Połączenie UP ENP0S3
Oczywiście, jeśli chcesz, aby Twój skrypt wykonał coś innego, możesz wpisać wszystko, co chcesz.
Na przykład,
#!/bin/bash touch/tmp/testbootfile
To utworzyłoby plik w środku /TMP folder (tylko aby sprawdzić, czy Twoja usługa działa).
Musimy również uczynić skrypt wykonywalny:
# chmod +x conup.cii
Teraz jesteśmy gotowi. Jeśli nie chcesz czekać do następnego rozruchu (jest już włączony), możemy rozpocząć usługę bieżącego pisania sesji:
# SystemCtl Rozpocznij połączenie.praca
Voila! Moje połączenie jest uruchomione!
Jeśli zdecydowałeś się napisać polecenie „Touch /TMP /Testbootfile” Wewnątrz skryptu, aby sprawdzić jego funkcjonalność, zobaczysz ten plik utworzony w środku /TMP teczka.
Potwierdź status usługiNaprawdę mam nadzieję, że pomogę ci dowiedzieć się, jakie usługi, cele, cele i uruchamianie scenariuszy podczas uruchamiania są.
- « Jak zainstalować Elasticsearch, Logstash i Kibana (Elk Stack) na Centos/Rhel 7
- Moc Linux „History Command” w Bash Shell »