Identificeer het Mac-VPN-hulpprogramma voordat u het proces beëindigt
Koppel een VPN-proces aan zijn uitvoerbare bestand, zijn beheerder en zijn netwerkrol voordat u het stopt, en gebruik daarna de stoppende weg van de eigenaar in plaats van een signaal.
Behandel een melding over een hulpprogramma dat al draait als een levenscyclusaanwijzing, niet als toestemming om processen te gaan doden. De gevaarlijke stap is niet het stoppen zelf, maar de identificatie ervoor, omdat er op één Mac meerdere onderdelen met vergelijkbare namen kunnen bestaan en slechts één daarvan de verbinding bezit. Bouw eerst het identiteitsrecord op. Besluit daarna of stoppen überhaupt de juiste actie is.
Bouw een identiteitsrecord voordat u handelt
Vier feiten maken een proces identificeerbaar: de huidige PID met zijn starttijd, het uitvoerbare bestand en het product waartoe het behoort, de gebruiker of privilegescontext waaronder het draait, en wat het heeft gestart. ps -o pid,ppid,user,etime,command -p 1234 geeft u de eerste drie op één regel, inclusief hoe lang het proces al leeft. Activiteitenweergave toont dezelfde informatie op een vriendelijker manier. Voeg de beheerder toe, dat wil zeggen de toepassing of dienst die verantwoordelijk is voor het starten en stoppen ervan. Met die vier is een proces geen naam meer, maar een object waarover u kunt redeneren.
Als een van de vier onbekend is, stop dan daar. Een onbekend onderdeel is een vraag voor de uitgever of de beheerder, niet een experiment.
De PID in een oud logboek is nu van iemand anders
Proces-ID's worden hergebruikt, en een nummer dat uit het logboek van gisteren is gekopieerd, kan nu op iets volledig ongerelateerds wijzen. Vergelijk de starttijd met de tijdstempel in het logboek voordat u een conclusie trekt. Hetzelfde geldt voor een korte naam: twee builds van één product kunnen hulpprogramma's met identieke namen en verschillende doelen meeleveren. Identiteit is het tupel, nooit alleen het nummer.
Scheid de rollen voordat u iets anders aanraakt. De cliënt van één verbinding, een gedeeld hulpprogramma dat meerdere toepassingen bedient, en een server die sessies van anderen accepteert, zien er in een lijst allemaal uit als een achtergrondproces. Slechts één ervan kan worden gestopt zonder gevolgen die u niet hebt overwogen.
Stop via de eigenaar, niet via het signaal
Begin bij het bedieningselement dat het ding bezit: de knop Verbinding verbreken van de verbinding, de ondersteunde stopopdracht van de dienst, of de eigen actie van de beheeragent. Die wegen voeren de afbraak uit die het product verwacht, inclusief het verwijderen van routes en het sluiten van het tunnelapparaat. Een signaal slaat dat allemaal over en laat toestand achter.
Let op wat er daarna overblijft. Een proces dat blijft draaien, wacht mogelijk op de volgende verbinding, wat een ontwerpkeuze is en geen mislukte stop.
Waarom een supervisor herstart wat u hebt gedood
Als een launch-daemon of een automatisch verbindingsbeleid wil dat de tunnel actief is, drukt het doden van het proces niets uit. De supervisor ziet het einde en start het opnieuw, soms voordat u klaar bent met het lezen van het logboek.
Vind de supervisor voordat u ertegen vecht. launchctl list toont geladen taken en hun labels, en een taak met een keep-alive-instelling herstart bij beëindiging, zoals ontworpen. De juiste actie is daar de bedoeling wijzigen: de taak ontladen, het automatische verbindingsbeleid uitschakelen, of de beheerder vragen dat te doen. Geforceerd afsluiten is een ander gereedschap met een andere betekenis, en het hoort bij een gedocumenteerde herstelprocedure voor een vastgelopen proces, niet bij routinebeheer van verbindingen.
Leg de levenscyclusgebeurtenis vast, niet de kill
Schrijf de identiteit van het onderdeel op, de clientversie, de eerste relevante levenscyclusgebeurtenis en wat u hebt gedaan. De gebeurtenis is belangrijker dan de actie, omdat twee instanties die bij het inloggen verschijnen een opstartvolgordeprobleem zijn dat terugkomt. Een record dat het uitvoerbare bestand en de beheerder noemt, laat de volgende persoon het reproduceren.
Controleer daarna de bedoelde toestand: de dienst die de gebruiker nodig had, en de privébron die hij bereikt. Vermijd de pijplijn die een substring grijpt en elke treffer geforceerd doodt, want die gooit alles hierboven weg en vernietigt meestal het bewijs waarom er twee instanties waren. Als het proces blijft terugkomen, is de bevinding een configuratie- of volgordefout, en de oplossing hoort bij wie het opstartgedrag van de client bezit.