Sporočilo o pomočniku, ki že teče, obravnavajte kot sled življenjskega cikla, ne kot dovoljenje za začetek ubijanja procesov. Nevaren korak ni ustavitev sama, temveč prepoznavanje pred njo, saj lahko na enem Macu obstaja več komponent s podobnimi imeni in le ena od njih ima v lasti povezavo. Najprej sestavite zapis identitete. Nato se odločite, ali je ustavitev sploh pravo dejanje.

Sestavite zapis identitete, preden ukrepate

Štiri dejstva naredijo proces prepoznaven: trenutni PID s časom zagona, izvršljiva datoteka in izdelek, ki mu pripada, uporabnik ali kontekst pravic, pod katerim teče, in tisto, kar ga je zagnalo. ps -o pid,ppid,user,etime,command -p 1234 vam da prve tri v eni vrstici, vključno s tem, kako dolgo proces živi. Monitor dejavnosti prikazuje iste podatke na prijaznejši način. Dodajte krmilnik, torej aplikacijo ali storitev, odgovorno za njegov zagon in ustavitev. S temi štirimi proces preneha biti ime in postane predmet, o katerem je mogoče razmišljati.

Če je eden od štirih neznan, se tam ustavite. Neznana komponenta je vprašanje za izdajatelja ali skrbnika, ne poskus.

PID v starem dnevniku zdaj pripada nekomu drugemu

ID procesov se reciklirajo in številka, kopirana iz včerajšnjega dnevnika, lahko zdaj kaže na nekaj povsem nepovezanega. Primerjajte čas zagona s časovnim žigom v dnevniku, preden naredite kakršen koli sklep. Enako velja za kratko ime: dve graditvi enega izdelka lahko prineseta pomočnike z enakimi imeni in različnimi nameni. Identiteta je terkica, nikoli samo številka.

Ločite vloge, preden se dotaknete česar koli drugega. Odjemalec ene povezave, skupni pomočnik, ki streže več aplikacijam, in strežnik, ki sprejema seje drugih, so na seznamu videti kot proces v ozadju. Samo enega od njih je mogoče ustaviti brez posledic, ki jih niste upoštevali.

Ustavite prek lastnika, ne prek signala

Začnite s krmilnikom, ki je lastnik stvari: gumbom za prekinitev povezave, podprtim ukazom storitve za ustavitev ali lastnim dejanjem upravljalnega agenta. Te poti izvedejo razgradnjo, ki jo izdelek pričakuje, vključno z odstranitvijo poti in zaprtjem tunelske naprave. Signal vse to preskoči in za seboj pusti stanje.

Poglejte, kaj ostane po tem. Proces, ki ostane v pomnilniku, lahko čaka na naslednjo povezavo, kar je oblikovalska izbira in ne neuspešna ustavitev.

Zakaj nadzornik znova zažene to, kar ste ubili

Če želi zagonski demon ali pravilo samodejnega povezovanja, da je tunel vzpostavljen, ubijanje procesa ne izraža ničesar. Nadzornik vidi izhod in ga znova zažene, včasih preden končate z branjem dnevnika.

Poiščite nadzornika, preden se z njim spopadete. launchctl list prikazuje naložena opravila in njihove oznake, opravilo z nastavitvijo keep-alive pa se ob izhodu znova zažene, tako je zasnovano. Pravilno dejanje je tam spremeniti namen: raztovorite opravilo, onemogočite pravilo samodejnega povezovanja ali prosite skrbnika za to. Prisilno zaprtje je drugo orodje z drugim pomenom in sodi k dokumentiranemu postopku obnovitve zagozdenega procesa, ne k rutinskemu upravljanju povezav.

Zabeležite dogodek življenjskega cikla, ne uboja

Zapišite identiteto komponente, različico odjemalca, prvi pomembni dogodek življenjskega cikla in kaj ste storili. Dogodek je pomembnejši od dejanja, ker sta dva primerka, ki se pojavita ob prijavi, težava z vrstnim redom zagona, ki se bo ponovila. Zapis z imenom izvršljive datoteke in njenega krmilnika omogoči naslednji osebi, da to ponovi.

Nato preverite predvideno stanje: storitev, ki jo je uporabnik potreboval, in zasebni vir, do katerega seže. Izogibajte se cevovodu, ki išče podniz in na silo ubije vsako ujemanje, saj zavrže vse zgoraj navedeno in običajno uniči dokaz o tem, zakaj sta obstajala dva primerka. Če se proces kar vrača, je ugotovitev napaka v konfiguraciji ali vrstnem redu, popravek pa sodi k tistemu, ki upravlja vedenje odjemalca ob zagonu.

Sorodni članki