Datoteka PID je, tunela ni: je OpenVPN sploh kdaj tekel?
Preostala datoteka PID ne pove ničesar o tem, ali tunel deluje. Pred brisanjem preverite storitev, čas zagona procesa in pogodbo zagonskega programa.
Ko zagonski program noče zagnati OpenVPN, ker datoteka PID že obstaja, je naravno branje, da nekje teče tunel. To branje je dovolj pogosto napačno, da ga je vredno preveriti, preden karkoli izbrišete. Datoteka v zagonski mapi je knjigovodstvo, knjigovodstvo pa preživi sesutja, ponovne zagone in prekinjene izklope, ki niso pustili procesa. Zadevo odločata dve vprašanji: ali obstaja živi proces in ali ta proces pripada tej instanci.
Začnite s storitvijo, ne z datoteko
Zavrnitev običajno pride od zagonskega programa in ne od samega OpenVPN. Prebere pot, tam najde nekaj in se ustavi, preden se konfiguracija razčleni. Prvo vprašanje je torej o pogodbi zagonskega programa, ne o tunelu.
Preberite enoto ali skript, ki je izpisal sporočilo, in upoštevajte tri stvari: pot, ki jo preverja, vrsto storitve, ki jo navaja, in ali je sploh odgovoren za pisanje datoteke. Sodobna enota lahko uporablja preprost nadzor ali nadzor z obvestili in se datoteke PID nikoli ne dotakne, medtem ko jo starejši init skript lahko ustvari sam. Kopiranje preverjanja iz enega modela v drugega ustvari natanko takšno zavrnitev. Ugotovite, kateri model se uporablja, preden karkoli razlagate.
Šele takrat postane vprašanje, ali instanca res teče.
Preverite, ali ta identifikator pripada vaši instanci
Število v datoteki dokazuje, da je bilo število zapisano. Ne dokazuje, da proces s tem identifikatorjem zdaj obstaja, in zagotovo ne dokazuje, da je proces vaš, saj se identifikatorji po ponovnem zagonu znova uporabijo.
Primerjajte čas zagona procesa s časovnim žigom datoteke, izvršljivo datoteko z ukazom enote in članstvo v storitvi z imenom enote. Neujemanje v katerem koli od treh pomeni, da gledate knjigovodstvo in ne tunela.
Na gostitelju s kontejnerji ali več imenskimi prostori je lahko identifikator smiseln v enem pogledu in odsoten v drugem. Tudi to, da procesa ne vidite, ni dokaz, da ne obstaja, če ga vaš račun ne more pregledati. Preverjajte iz konteksta, ki ga uporablja zagonski program, preden sklepate.
systemctl status [email protected]
ps -o pid,lstart,args -p "$(cat /run/openvpn/vpn.pid)"Kaj je zagonski program obljubil storiti z datoteko
PIDFile= upravitelju storitev pove, od kod brati identifikator glavnega procesa. Upravitelj te datoteke ne piše, odstrani pa preostalo po izklopu, in prav zato lahko prekinjen izhod pusti datoteko.
Ta delitev odgovornosti pojasnjuje dva simptoma, ki jih ljudje prijavljajo kot napake. Datoteka, ki se nikoli ne pojavi, pomeni, da je nista uspela zapisati demon ali njegov skript, ne da je nadzor napačno nastavljen. Datoteka, ki preživi zaustavitev, pomeni, da se pot izklopa ni nikoli dokončala.
Pojasnjuje tudi, zakaj sedanje smernice predlagajo, da se tej konvenciji izognete, ko lahko nadzor neposredno sledi glavnemu procesu. Te smernice niso dovoljenje za spremembo vrste pakirane enote, ker se mora vedenje demona v ospredju, pri razvejanju ali pri obvestilih ujemati s tem, kar enota navaja. Spremenite vrsto, ne da bi spremenili demona, in dobite enoto, ki poroča o napaki, medtem ko tunel teče, ali obratno. Ujemite par ali pustite oboje. Referenca storitve systemd opisuje to delitev lastništva.
Čist izklop proti prekinjenemu izhodu
Čista zaustavitev prosi demona, naj izstopi, počaka nanj in upravitelju dovoli, da pospravi svoje knjigovodstvo. Prekinjen izhod, ubit proces ali ponovni zagon sredi izklopa preskočijo dele tega zaporedja, datoteka pa je tisto, kar ostane. Najti jo po sesutju pomeni, da se izklop ni dokončal, ne da nekaj posluša.
Primerjajte časovni žig datoteke z zadnjim zagonom in z zadnjo zaustavitvijo enote.
Nato neposredno preverite žive dokaze. Vtičnica, vezana na vrata VPN, in tunelski vmesnik z naslovom sta dokaz, da nekaj teče, na način, kot tekstovna datoteka v zagonski mapi ni nikoli. Če obojega ni, nič ne teče, kar koli že datoteka trdi.
Nehajte datoteko brisati iz navade
Brisanje je legitimna obnovitvena poteza, ko ugotovite, da je nobena instanca ne poseduje in da zagonski program to vedenje dokumentira.
Kot trajna navada pred zagonom spodkoplje preverjanje, ki se mu izogibate. Če se zastarele datoteke vračajo po vsaki čisti zaustavitvi, se pisec in življenjski cikel izklopa ne strinjata o tem, kdo ima pot, in to nesoglasje je napaka, ki se jo splača popraviti.
Ohranite neodvisno pot v gostitelja, zaženite eno instanco prek njenega običajnega upravitelja in preberite prvi rezultat. Naslednja oseba dobi enoto, ki bodisi deluje bodisi se pojasni.