Poruku o pomoćniku koji već radi tretirajte kao trag o životnom ciklusu, a ne kao dozvolu da počnete ubijati procese. Opasan korak nije samo zaustavljanje, nego identifikacija prije njega, jer na jednom Macu može postojati nekoliko komponenti sa sličnim imenima i samo jedna od njih posjeduje vezu. Prvo izgradite zapis identiteta. Zatim odlučite da li je zaustavljanje uopće ispravna radnja.

Izgradite zapis identiteta prije nego što djelujete

Četiri činjenice čine proces prepoznatljivim: trenutni PID s vremenom početka, izvršna datoteka i proizvod kojem pripada, korisnički ili privilegijski kontekst u kojem radi, i sve što ga je pokrenulo. ps -o pid,ppid,user,etime,command -p 1234 vam daje prve tri u jednom redu, uključujući i to koliko dugo je proces živ. Activity Monitor pokazuje iste informacije s prijateljskijim licem. Dodajte kontroler, odnosno aplikaciju ili uslugu odgovornu za njegovo pokretanje i zaustavljanje. S te četiri proces prestaje biti ime i postaje objekt o kojem možete razmišljati.

Ako je jedan od četiri nepoznat, zaustavite se tu. Nepoznata komponenta je pitanje za izdavača ili administratora, a ne eksperiment.

PID u starom dnevniku sada pripada nekom drugom

ID-ovi procesa se recikliraju, a broj kopiran iz jučerašnjeg dnevnika može sada pokazivati na nešto potpuno nepovezano. Uporedite vrijeme početka s vremenskom oznakom dnevnika prije nego što izvedete bilo kakav zaključak. Isto vrijedi i za kratko ime: dvije verzije jednog proizvoda mogu isporučiti pomoćnike s identičnim imenima i različitim namjenama. Identitet je torka, nikada samo broj.

Razdvojite uloge prije nego što dotaknete bilo šta drugo. Klijent jedne veze, zajednički pomoćnik koji služi nekoliko aplikacija i server koji prihvaća sesije drugih ljudi svi izgledaju kao pozadinski proces na listi. Samo jedan od njih može se zaustaviti bez posljedica koje niste razmotrili.

Zaustavite kroz vlasnika, a ne kroz signal

Počnite s kontrolom koja posjeduje stvar: dugmetom Prekini vezu, podržanom naredbom usluge za zaustavljanje ili vlastitom radnjom agenta za upravljanje. Ti putevi izvode demontažu koju proizvod očekuje, uključujući uklanjanje ruta i zatvaranje tunelskog uređaja. Signal sve to preskače i ostavlja stanje za sobom.

Pazite šta ostaje poslije. Proces koji ostane u memoriji možda čeka sljedeću vezu, što je dizajnerski izbor, a ne neuspjelo zaustavljanje.

Zašto supervizor ponovo pokreće ono što ste ubili

Ako launch daemon ili politika automatskog povezivanja namjerava držati tunel aktivnim, ubijanje procesa ne izražava ništa. Supervizor vidi izlaz i pokreće ga ponovo, ponekad prije nego što završite čitanje dnevnika.

Nađite supervizora prije nego što se s njim borite. launchctl list prikazuje učitane poslove i njihove oznake, a posao s postavkom održavanja života ponovo se pokreće pri izlazu po dizajnu. Ispravna radnja tu je promijeniti namjeru: iskrcajte posao, onemogućite politiku automatskog povezivanja ili zamolite administratora da to učini. Prisilno zatvaranje je drugačiji alat s drugačijim značenjem i pripada dokumentovanom postupku oporavka za zaglavljeni proces, a ne rutinskom upravljanju vezama.

Zabilježite događaj životnog ciklusa, a ne ubijanje

Zapišite identitet komponente, verziju klijenta, prvi relevantni događaj životnog ciklusa i šta ste učinili. Događaj je važniji od radnje, jer dvije instance koje se pojavljuju pri prijavi predstavljaju problem redoslijeda pokretanja koji će se ponoviti. Zapis koji imenuje izvršnu datoteku i njen kontroler omogućava sljedećoj osobi da to reprodukuje.

Zatim provjerite namjeravano stanje: uslugu koja je korisniku trebala i privatni resurs do kojeg ona dolazi. Izbjegavajte cjevovod koji traži podniz i prisilno ubija svako podudaranje, jer odbacuje sve navedeno i obično uništava dokaz zašto su postojale dvije instance. Ako se proces stalno vraća, nalaz je defekt konfiguracije ili redoslijeda, a popravka pripada onome ko posjeduje ponašanje pokretanja klijenta.

Povezani članci