Isključivanje Linux VPN i proxy usluga pravim redosledom
Zaustavite potrošača dok put još postoji, zatim proxy, pa tunel kroz njegovog vlasnika. ExecStop i TimeoutStopSec koristite namerno, a ne širokim ubijanjem procesa.
Zastoj pri isključivanju dok proxy radi retko je VPN greška, čak i kad je VPN zadnje što se vidi na ekranu. Aplikacije iza proxyja još čekaju put koji će upravo nestati, a jedinica koja poseduje tunel još nije zamoljena da ga zatvori. Ono što izgleda kao spora usluga obično je problem redosleda. Redosled rešava više takvih slučajeva nego bilo kakva promena vremenskog ograničenja.
Radite prema spolja obrnutim redom: prvo potrošači, zatim proxy, zatim tunel, a svaki zaustavlja komponenta koja ga je pokrenula.
Popišite jedinice pre nego što bilo šta zaustavite
Zapišite jedinicu aplikacije, jedinicu proxyja i vlasnika VPN-a uključene u normalan rad. Dodajte svaki razrešivač ili pomoćnik sa sopstvenim razgradnjom, jer upravo njih ljudi zaborave u dva sata ujutru. Bez tog popisa prva naredba za zaustavljanje koju upišete odabira žrtvu nasumično.
Imena su slab dokaz. Korisnički proxy, sistemski proxy i tunel drugog računa mogu deliti ime, a imati potpuno nepovezane životne cikluse.
Dovršite posao, pa zaustavite potrošača
Planirano zaustavljanje počinje aplikacijom: pustite je da dovrši ili otkaže svoje zahteve, pa zaustavite proxy kroz njegovu servisnu jedinicu. Ako aplikacija treba da nastavi da radi nakon što tunel nestane, uredite to namerno, umesto da je ostavite pripetu na rutu koja će upravo nestati.
Zahtevi koji su bili u toku tokom zaustavljanja pripadaju u zapis, jer odatle dolazi oluja ponovnih pokušaja pri sledećem pokretanju.
ExecStop i ExecStopPost različiti su instrumenti
ExecStop= je sinhrona operacija zaustavljanja; ExecStopPost= je čišćenje koje se izvodi čak i nakon neuspelog pokretanja. Naredba za zaustavljanje koja samo pošalje signal procesu i vrati se pušta systemd dalje dok potrošač još ispuhuje podatke. Sve što mora da se dogodi u svakom slučaju pripada u post varijantu, a sve što mora da blokira zaustavljanje u sinhronu. Pregledajte stvarnu jedinicu i njene dodatke umesto da uređujete datoteku iz paketa na mestu.
Graf zavisnosti poređa poslove zaustavljanja. On ne pretvara asinhronu skriptu u sinhronu, niti tera udaljenu aplikaciju da zapiše svoje podatke.
Ograničite zaustavljanje i znajte koliko granica košta
TimeoutStopSec= ograničava i naredbu za zaustavljanje i vlastito prekidanje usluge, a systemd prelazi na prisilno ubijanje kad ograničenje istekne. Odaberite vrednost prema stvarnom ponašanju aplikacije pri ispuhivanju i zapišite šta može biti izgubljeno kad se aktivira. Broj odabran zato što računar treba brže da se ugasi jeste postavka za gubitak podataka u prerušenom obliku.
Kad je zaustavljanje još sporo, zabeležite jedinicu, njene podređene procese, interval u dnevniku i rezultat ograničenja. Skraćivanje svakog ograničenja ili posezanje za širokim ubijanjem način je na koji se čista zaustavljanja pretvaraju u oštećeno stanje pri sledećem podizanju.
Odspojite se kroz vlasnika, pa isprobajte tri slučaja
Nakon što potrošači padnu, zamolite upravljača koji poseduje tunel da se odspoji: instancu systemd, aktivnu vezu NetworkManager ili uslugu dobavljača. Ubijanje nepovezanog procesa OpenVPN ne uklanja nužno sesiju koja je dala rutu, a proxy sa pravilom ponovnog pokretanja može ponovo stvoriti zahtev dok razgrađujete put. Uskladite to pravilo sa planiranim zaustavljanjem pre nego što počnete.
Isprobajte normalno zaustavljanje, zaustavljanje sa aktivnim zahtevom i zaustavljanje u kojem tunel prvi zakaže. Ponovljiv sled sa rokom bolji je od brzog isključivanja koje uspe jednom.