O instanță OpenVPN apare la pornire sub un nume pe care nu îl recunoști, iar oprirea ei funcționează până la următoarea repornire. Acest model înseamnă că ai eliminat procesul, dar nu activarea. Sunt două obiecte diferite, iar doar unul dintre ele este vizibil într-un ecran de stare. Găsirea activării necesită patru comenzi doar pentru citire și o decizie.

Numește mai întâi unitatea exactă

Pornește de la numele unității din journal, nu de la numele unui fișier de profil. Instanța se poate numi openvpn@, openvpn-client@, openvpn-server@ sau ceva specific distribuției, iar ghicirea numelui te duce la șablonul greșit. Ieșirea de stare numește unitatea care a rulat efectiv, iar acesta este singurul nume care contează aici. Copiaz-o exact, inclusiv orice sufix.

Următoarele comenzi descriu acea unitate fără a schimba nimic. systemctl show raportează calea fragmentului, calea sursei, starea fișierului unității, eventualele drop-in-uri și ce a declanșat-o. list-dependencies --reverse arată ce unități încărcate indică spre ea. Ambele sunt doar pentru citire, așa că rulează-le înainte de a forma o teorie.

Înlocuiește numele observat peste tot. Un nume de exemplu copiat este cea mai obișnuită cale de a investiga serviciul greșit și produce răspunsuri încrezătoare despre o unitate care nu a rulat niciodată.

Citește șablonul pentru a afla numele fișierului

O unitate de instanță este o expansiune a unui șablon, iar șablonul decide ce fișier de configurare citește. O linie de comandă care se termină într-un substituent specific instanței se rezolvă la numele instanței plus sufixul. Dacă sufixul este .conf și instanța se numește old, fișierul este old.conf. Dacă numești instanța old.conf, același șablon cere old.conf.conf.

Acel detaliu explică o clasă de duplicate. Cineva adaugă o a doua instanță sub numele greșit, prima continuă să ruleze, iar gazda ajunge cu două tuneluri și un jurnal confuz.

Citește șablonul efectiv, nu fișierul despre care crezi că l-ai editat. Un drop-in poate înlocui linia de comandă, iar înlocuirea este ceea ce rulează la pornire.

Urmărește cum intră în tranzacția de pornire

Trei rute sunt obișnuite: o legătură wants de la un target, o cerință de la o altă unitate sau o unitate generată de un generator de pachete. Lista dependențelor inverse acoperă primele două ca intrări încărcate ale grafului. Nu acoperă un timer, un hook sau o cerere externă, motiv pentru care lista este o dovadă, nu un audit complet.

Ieșirea generată sub /run/systemd/generator este un produs, nu o sursă. Editarea ei supraviețuiește doar până la următoarea generare, motiv pentru care o corecție aplicată acolo pare reușită și apoi revine.

Verifică intrarea documentată a pachetului înainte de a presupune de unde citește generatorul. O scanare nedocumentată a unui director este motivul obișnuit pentru care o unitate apare fără o legătură de activare.

Elimină activarea, nu doar procesul

Dacă instanța este activată direct și este cu adevărat învechită, systemctl disable --now o oprește și elimină legătura de pornire într-un singur pas. Verifică mai întâi că acest tunel nu este singura ta cale administrativă către gazdă. Comanda este un exemplu de ciclu de viață, nu o sugestie de a opri fiecare VPN de pe mașină. Rulează verificarea înainte de comandă, nu după.

Cele două jumătăți sunt separabile și adesea confundate. Dezactivarea nu oprește un serviciu aflat în rulare, iar oprirea nu elimină activarea, așa că o comandă parțială explică o problemă care revine la pornire.

O unitate dezactivată poate fi totuși pornită de o altă unitate sau de o cerere explicită. Când un generator deține activarea, corectează intrarea generatorului în loc să îi dezactivezi ieșirea. Mascarea blochează mai multe căi, dar poate rupe dependențe, așa că nu înlocuiește înțelegerea.

Verifică printr-o repornire, nu printr-un ecran de stare

Reîncarcă systemd dacă definițiile unităților sau intrările generatorului s-au schimbat, apoi inspectează starea rezultată. O reîncărcare a daemonului nu împinge un profil nou într-un tunel aflat în rulare, așa că cele două verificări sunt separate. Programează o repornire și confirmă că instanța rămâne absentă în timp ce tunelul dorit încă funcționează.

Păstrează profilul vechi până când proprietatea lui este înțeleasă, apoi retrage-l prin procesul prevăzut. Succesul este o unitate absentă și o cale de acces funcțională, nu o unitate eșuată care lipsește dintr-un ecran.

Articole similare