Identifikujte pomocníka VPN v Macu skôr, než proces ukončíte
Priraďte proces VPN k jeho spustiteľnému súboru, kontrolórovi a sieťovej úlohe skôr, než ho zastavíte, a potom použite vlastníkovu cestu zastavenia namiesto signálu.
Správu o pomocníkovi, ktorý už beží, berte ako stopu životného cyklu, nie ako povolenie začať zabíjať procesy. Nebezpečný krok nie je samotné zastavenie, ale identifikácia pred ním, pretože na jednom Macu môže existovať viac komponentov s podobnými názvami a iba jeden z nich vlastní spojenie. Najprv zostavte záznam identity. Potom rozhodnite, či je zastavenie vôbec správna akcia.
Zostavte záznam identity skôr, než budete konať
Štyri fakty robia proces identifikovateľným: aktuálny PID s časom spustenia, spustiteľný súbor a produkt, ku ktorému patrí, používateľ alebo kontext oprávnení, pod ktorým beží, a to, čo ho spustilo. ps -o pid,ppid,user,etime,command -p 1234 vám dá prvé tri na jednom riadku vrátane toho, ako dlho proces žije. Monitor aktivity zobrazuje rovnaké informácie prístupnejšou formou. Pridajte kontrolóra, teda aplikáciu alebo službu zodpovednú za jeho spúšťanie a zastavovanie. S týmito štyrmi prestáva byť proces názvom a stáva sa objektom, o ktorom sa dá uvažovať.
Ak je jeden zo štyroch neznámy, zastavte sa tam. Neznámy komponent je otázka pre vydavateľa alebo správcu, nie experiment.
PID v starom logu teraz patrí niekomu inému
ID procesov sa recyklujú a číslo skopírované z včerajšieho logu môže teraz ukazovať na niečo úplne nesúvisiace. Porovnajte čas spustenia s časovou značkou v logu, skôr než vyvodíte akýkoľvek záver. To isté platí pre krátky názov: dve zostavenia jedného produktu môžu dodávať pomocníkov s rovnakými názvami a odlišnými účelmi. Identita je n-tica, nikdy len číslo.
Rozdeľte úlohy skôr, než sa dotknete čohokoľvek iného. Klient jedného spojenia, zdieľaný pomocník obsluhujúci viac aplikácií a server prijímajúci cudzie relácie vyzerajú v zozname ako proces na pozadí. Iba jeden z nich sa dá zastaviť bez následkov, ktoré ste nezvážili.
Zastavujte cez vlastníka, nie cez signál
Začnite ovládacím prvkom, ktorý vec vlastní: tlačidlom Odpojiť spojenie, podporovaným príkazom služby na zastavenie alebo vlastnou akciou agenta správy. Tieto cesty vykonajú demontáž, ktorú produkt očakáva, vrátane odstránenia trás a zatvorenia tunelového zariadenia. Signál to všetko preskočí a zanechá za sebou stav.
Sledujte, čo zostane potom. Proces, ktorý zostane v pamäti, môže čakať na ďalšie spojenie, čo je konštrukčná voľba, a nie neúspešné zastavenie.
Prečo správca reštartuje to, čo ste zabili
Ak spúšťací démon alebo pravidlo automatického pripojenia chce, aby bol tunel aktívny, zabitie procesu nič nevyjadruje. Správca vidí ukončenie a znova ho spustí, niekedy skôr, než dokončíte čítanie logu.
Nájdite správcu skôr, než s ním začnete bojovať. launchctl list zobrazuje načítané úlohy a ich označenia a úloha s nastavením keep-alive sa pri ukončení reštartuje, ako bolo navrhnuté. Správna akcia je tam zmeniť zámer: vyložte úlohu, vypnite pravidlo automatického pripojenia alebo o to požiadajte správcu. Vynútené ukončenie je iný nástroj s iným významom a patrí k zdokumentovanému postupu obnovy zaseknutého procesu, nie k bežnej správe spojení.
Zaznamenajte udalosť životného cyklu, nie zabitie
Zapíšte identitu komponentu, verziu klienta, prvú relevantnú udalosť životného cyklu a to, čo ste urobili. Udalosť je dôležitejšia ako akcia, pretože dve inštancie objavujúce sa pri prihlásení sú problém poradia spúšťania, ktorý sa bude opakovať. Záznam s názvom spustiteľného súboru a jeho kontrolóra umožní ďalšiemu človeku reprodukovať to.
Potom overte zamýšľaný stav: službu, ktorú používateľ potreboval, a súkromný zdroj, ku ktorému sa dostane. Vyhnite sa potrubiu, ktoré hľadá podreťazec a násilne zabíja každú zhodu, pretože zahadzuje všetko vyššie uvedené a zvyčajne zničí dôkaz o tom, prečo existovali dve inštancie. Ak sa proces stále vracia, zistením je chyba konfigurácie alebo poradia a oprava patrí tomu, kto vlastní správanie klienta pri spustení.