Wann de Starter OpenVPN net starte wëll, well et schonn eng PID-Datei gëtt, ass déi natierlech Liesart, datt irgendo en Tunnel leeft. Déi Liesart ass dacks genuch falsch, fir se virum Läschen ze kontrolléieren. Eng Datei an engem Runtime-Verzeechnis ass Buchhaltung, a Buchhaltung iwwerlieft Ofstierzen, Neistarts an ofgebrach Ofschalten, déi kee Prozess hannerlooss hunn. Zwou Froen entscheeden de Fall: gëtt et e liewegen Prozess, an ass dee Prozess vun dëser Instanz.

Fänkt mam Service un, net mat der Datei

D'Refus kënnt meeschtens vun engem Starter an net vun OpenVPN selwer. En liest e Pad, fënnt do eppes a stoppt, ier eng Konfiguratioun analyséiert gëtt. Déi éischt Fro ass dowéinst iwwer de Kontrakt vum Starter, net iwwer den Tunnel.

Liest d'Unit oder de Skript, deen d'Meldung gedréckt huet, a notéiert dräi Saachen: de Pad, deen en iwwerpréift, den Typ vu Service, deen en deklaréiert, an ob en iwwerhaapt fir d'Schreiwen vun der Datei verantwortlech ass. Eng modern Unit kann einfach oder Notify-Iwwerwaachung benotzen an eng PID-Datei ni beréieren, wärend en eelere Init-Skript selwer eng maache kann. Eng Prüfung vun engem Modell an dat anert kopéieren erzeugt genau dës Zort Refus. Fënnt eraus, wéi ee Modell benotzt gëtt, ier Dir eppes interpretéiert.

Eréischt dann gëtt d'Fro, ob eng Instanz wierklech leeft.

Préift, ob deen Identifiant zu Ärer Instanz gehéiert

Eng Zuel an enger Datei beweist, datt eng Zuel geschriwwe gouf. Se beweist net, datt e Prozess mat deem Identifiant elo existéiert, an natierlech och net, datt de Prozess Ären ass, well Identifiante no engem Neistart erëm benotzt ginn.

Vergläicht d'Startzäit vum Prozess mam Zäitstempel vun der Datei, d'Ausféierbar mam Befehl vun der Unit an d'Memberschaft am Service mam Numm vun der Unit. Eng Diskrepance an engem vun den dräi bedeit, datt Dir Buchhaltung an net en Tunnel kuckt.

Op engem Host, deen Containere oder méi Nummraim lafe léisst, kann en Identifiant an enger Vue sënnvoll sinn an an enger anerer feelen. E Prozess net ze gesinn ass och kee Beweis, datt en net existéiert, wann Ären Kont en net ka kontrolléieren. Préift aus dem Kontext, deen de Starter benotzt, ier Dir Schlëss zitt.

systemctl status [email protected]
ps -o pid,lstart,args -p "$(cat /run/openvpn/vpn.pid)"

Wat de Starter versprach huet, mat der Datei ze maachen

PIDFile= seet dem Service-Manager, wou en den Identifiant vum Haaptprozess liese soll. De Manager schreift déi Datei net, awer en entfernt déi, déi no dem Ofschalten iwwereg bliwwen ass, an genau dowéinst kann en ofgebrach Ofschlass eng Datei hannerloossen.

Déi Deelung vun der Verantwortung erkläert zwee Symptomer, déi d'Leit als Feeler mellen. Eng Datei, déi ni erschéngt, bedeit, datt den Daemon oder säi Skript se net konnt schreiwen, net datt d'Iwwerwaachung falsch konfiguréiert ass. Eng Datei, déi en Arrêt iwwerlieft, bedeit, datt den Ofschaltpad ni fäerdeg gouf.

Et erkläert och, firwat aktuell Richtlinien dorop hiweisen, d'Konventioun ze vermeiden, wann d'Iwwerwaachung den Haaptprozess direkt ka suivéieren. Déi Richtlinie ass keng Erlaabnes, den Typ vun enger gepackter Unit ze änneren, well d'Verhalen vum Daemon am Virdergrond, bei der Verzweigung oder bei der Notifikatioun muss dem entspriechen, wat d'Unit deklaréiert. Ännert den Typ, ouni den Daemon z'änneren, an Dir kritt eng Unit, déi e Feeler mellt, wärend den Tunnel leeft, oder ëmgedréit. Passt d'Paar zesummen, oder loosst béides. D'systemd-Service-Referenz beschreift d'Deelung vum Besëtz.

Sauber Ofschalten géint ofgebrach Ofschlass

En sauberen Arrêt freet den Daemon, erauszegoen, waart op en an lässt de Manager seng eege Buchhaltung opraumen. En ofgebrach Ofschlass, en ëmbruechte Prozess oder en Neistart an der Mëtt vum Ofschalten iwwerspréngt Deeler vun där Rei, an d'Datei ass dat, wat bleift. Eng no engem Ofstuerz ze fannen, seet Iech, datt d'Ofschalten net fäerdeg gouf, net datt eppes lauschtert.

Vergläicht den Zäitstempel vun der Datei mat der leschter Startzäit an mam leschten Arrêt vun der Unit.

Préift duerno d'lieweg Beweiser direkt. E Socket, deen un de VPN-Port gebonnen ass, an eng Tunnel-Schnittstell mat enger Adress si Beweis, datt eppes leeft, op eng Manéier, wéi eng Textdatei an engem Runtime-Verzeechnis ni ass. Wann béides feelt, leeft näischt, wat d'Datei och behaapt.

Héiert op, d'Datei aus Gewunnecht ze läschen

Se ze läschen ass e legitime Recuperatiounsschratt, nodeems Dir festgestallt hutt, datt keng Instanz se besëtzt an datt de Starter dëst Verhalen dokumentéiert.

Als permanenter Virbereedungsgewunnecht ënnergrueft et d'Prüfung, déi Dir ëmgeet. Wann al Dateien no all sauberen Arrêt zréckkommen, sinn de Schreiwer an den Ofschalt-Lifecycle net eens, wiem de Pad gehéiert, an dee Sträit ass de Feeler, dee wäert ass ze fixen.

Hält eng onofhängeg Manéier an den Host, start eng Instanz iwwer hire normale Manager, a liest dat éischt Resultat. Déi nächst Persoun kritt eng Unit, déi entweder funktionéiert oder sech selbst erkläert.

Ähnlech Artikelen