Acum câteva zile, am dat peste un Centos 7 Distro pe 32 de biți și am simțit dorința de a-l testa pe o mașină veche de 32 de biți. După pornire mi-am dat seama că are o eroare și că pierde conexiunea la rețea, pe care a trebuit să o transform "sus" manual de fiecare dată după pornire. Deci, întrebarea a fost cum aș putea seta un script pentru a face această treabă, care rulează de fiecare dată când pornesc computerul?
Ei bine, acest lucru este foarte simplu și vă voi arăta modul în care folosiți unitățile de servicii. Dar mai întâi o mică introducere în unitățile de service.
În acest articol, voi explica ce a „Unitate de service” în systemd este, cât de ușor este să creați și să rulați unul. Voi încerca să simplific ce „Ținte” sunt, de ce le numim „Colecții de unități” și care sunt ale lor „Vrea”. În cele din urmă, profităm de o unitate de service pentru a rula propriul nostru script după procedura de boot.
Este evident că computerul dvs. este util datorită serviciilor pe care le oferă și pentru a avea această funcționalitate, multe servicii trebuie numite pe măsură ce computerul pornește și atinge niveluri diferite. Alte servicii sunt chemate să fie executate atunci când computerul atinge, de exemplu, nivelul de salvare (
nivel de rulare 0) și altele când atinge nivelul multi-utilizator (nivel de rulare 3). Vă puteți imagina aceste niveluri ca ținte.Într-un mod simplu, ținta este o colecție de unități de servicii. Dacă doriți să aruncați o privire asupra unităților de servicii care rulează în grafic.tinta nivel, tip:
# systemctl --type = service.
După cum puteți vedea, unele servicii sunt active și "alergare" tot timpul, în timp ce altele rulează o singură dată și se termină (ieșite). Dacă doriți să verificați starea unui serviciu, tastați:
# systemctl status firewalld.service.
După cum puteți vedea, am verificat starea firewalld.service
(bacsis: puteți utiliza completarea automată pentru numele serviciului). Mă informează că firewalld serviciul rulează tot timpul și este activat.
Nu ratați:Cum se configurează serviciul FirewallD în CentOS 7
Activat și dezactivat înseamnă că serviciul va fi încărcat permanent sau nu, respectiv la următoarea pornire. Pe de altă parte, pentru a porni și opri un serviciu are limitarea sesiunii actuale și nu este permanent.
De exemplu, dacă tastați:
# systemctl stop firewalld.service. # systemctl status firewalld.service.
Puteți vedea că firewalld.service
este inactiv (mort), dar este încă activat, ceea ce înseamnă că la următoarea pornire va fi încărcat. Deci, dacă dorim ca un serviciu să fie încărcat în timpul pornirii în viitor, trebuie să îl activăm. Ce concluzie grozavă! Să creăm una, este ușor.
Dacă accesați dosarul:
# cd / etc / systemd / system. # ls -l.
Puteți vedea câteva fișiere de legături ale serviciilor unitare și câteva directoare ale fișierului „Vrea” a unei ținte. De exemplu: ceea ce vrea să fie încărcat ținta multi-utilizator atunci când procedura de pornire atinge nivelul său, este listat în directorul cu nume /etc/systemd/system/multi-user.target.wants/.
# ls multi-user.target.wants /
După cum puteți vedea, nu conține doar Servicii dar și altele ținte care sunt și colecții de servicii.
Să creăm o unitate de service cu numele conexiune.serviciu.
# vim connection.service.
și tastați următoarele (hit „Eu”
pentru modul inserare), salvați-l și ieșiți (cu "Esc"
și „: Wq!”
) :
[Unitate] Descriere = realizarea conexiunii la rețea. After = network.target [Service] ExecStart = /root/scripts/conup.sh [Instalare] WantedBy = multi-user.target.
Pentru a explica cele de mai sus: am creat o unitate de tip serviciu (puteți crea și unități de tip țintă), am setat-o să fie încărcată după rețea. țintă (puteți înțelege că procedura de pornire atinge țintele cu o ordine definită) și vrem de fiecare dată când serviciul începe să execute un script bash cu numele conup.sh pe care urmează să le creăm.
Distracția începe cu ultima parte [instalare]. Spune că va fi dorit de „Multi-user.target”. Deci, dacă activăm serviciul nostru, se va crea o legătură simbolică către acel serviciu în interiorul multi-user.target.wants pliant! Am înțeles? Și dacă îl dezactivăm, acel link va fi șters. Atât de simplu.
Doar activați-l și verificați:
# systemctl activate connection.service.
ne informează că legătura simbolică din multi-user.target.wants folderul a fost creat. Verifică:
# ls multi-user.target.wants /
După cum puteți vedea „Connection.service” este gata pentru următorul boot, dar trebuie să creăm mai întâi fișierul script.
# cd / root. # scripturi mkdir. # cd scripturi. # vim conup.sh.
Adăugați următoarea linie în interior vim și salvați-l:
#! / bin / bash. nmcli connection up enp0s3.
Desigur, dacă doriți ca scriptul dvs. să execute altceva, puteți scrie orice doriți în loc de a doua linie.
De exemplu,
#! / bin / bash. atingeți / tmp / testbootfile.
care ar crea un fișier în interior /tmp folder (doar pentru a verifica dacă serviciul dvs. funcționează).
De asemenea, trebuie să facem scriptul executabil:
# chmod + x conup.sh.
Acum suntem gata. Dacă nu doriți să așteptați până la următoarea pornire (este deja activat) putem începe serviciul pentru sesiunea curentă tastând:
# systemctl începe conexiunea.serviciu.
Voila! Conexiunea mea este în funcțiune!
Dacă ați ales să scrieți comanda „Touch / tmp / testbootfile” în interiorul scriptului, doar pentru a verifica funcționalitatea acestuia, veți vedea acest fișier creat în interior /tmp pliant.
Sper cu adevărat să vă ajut să vă dați seama despre ce servicii, dorințe, ținte și rularea scripturilor în timpul bootării este vorba.