Zprávu o pomocníkovi, který už běží, berte jako stopu o životním cyklu, ne jako svolení začít zabíjet procesy. Nebezpečný krok není samo zastavení, ale identifikace před ním, protože na jednom Macu může existovat několik komponent s podobnými názvy a jen jedna z nich vlastní připojení. Nejprve sestavte záznam identity. Potom rozhodněte, zda je zastavení vůbec správná akce.

Sestavte záznam identity, než začnete jednat

Čtyři skutečnosti činí proces identifikovatelným: aktuální PID s časem spuštění, spustitelný soubor a produkt, ke kterému patří, uživatelský nebo privilegovaný kontext, ve kterém běží, a cokoli, co ho spustilo. ps -o pid,ppid,user,etime,command -p 1234 vám dá první tři na jednom řádku, včetně toho, jak dlouho je proces naživu. Activity Monitor ukazuje stejné informace s přátelštější tváří. Přidejte řadič, tedy aplikaci nebo službu odpovědnou za jeho spuštění a zastavení. S těmito čtyřmi přestává být proces jménem a stává se objektem, o kterém můžete uvažovat.

Pokud je jedna ze čtyř neznámá, zastavte se tam. Neznámá komponenta je otázka pro vydavatele nebo správce, ne experiment.

PID ve starém protokolu teď patří někomu jinému

ID procesů se recyklují a číslo zkopírované z včerejšího protokolu může nyní ukazovat na něco zcela nesouvisejícího. Než vyvodíte jakýkoli závěr, porovnejte čas spuštění s časovým razítkem protokolu. Totéž platí pro krátký název: dvě sestavení jednoho produktu mohou dodávat pomocníky s totožnými názvy a různými účely. Identita je tupl, nikdy jen číslo.

Oddělte role, než se dotknete čehokoli jiného. Klient jednoho připojení, sdílený pomocník obsluhující několik aplikací a server přijímající relace jiných lidí vypadají v seznamu všechny jako proces na pozadí. Jen jeden z nich lze zastavit bez důsledků, které jste nezvážili.

Zastavujte přes vlastníka, ne přes signál

Začněte ovládacím prvkem, který věc vlastní: tlačítkem Odpojit u připojení, podporovaným příkazem služby pro zastavení nebo vlastní akcí správcovského agenta. Tyto cesty provedou demontáž, kterou produkt očekává, včetně odstranění tras a zavření zařízení tunelu. Signál to vše přeskočí a zanechá po sobě stav.

Sledujte, co zůstane potom. Proces, který zůstane v paměti, může čekat na další připojení, což je designová volba, nikoli neúspěšné zastavení.

Proč supervizor restartuje to, co jste zabili

Pokud launch démon nebo zásada automatického připojení zamýšlí, aby byl tunel aktivní, zabití procesu nic nevyjadřuje. Supervizor vidí ukončení a znovu ho spustí, někdy dřív, než dočtete protokol.

Najděte supervizora, než s ním začnete bojovat. launchctl list zobrazuje načtené úlohy a jejich štítky a úloha s nastavením udržování naživu se při ukončení restartuje podle návrhu. Správnou akcí je tam změnit záměr: vyložit úlohu, vypnout zásadu automatického připojení nebo o to požádat správce. Vynucené ukončení je jiný nástroj s jiným významem a patří k dokumentovanému postupu obnovy pro zaseknutý proces, nikoli k běžné správě připojení.

Zaznamenejte událost životního cyklu, ne zabití

Zapište identitu komponenty, verzi klienta, první relevantní událost životního cyklu a co jste udělali. Událost je důležitější než akce, protože dvě instance objevující se při přihlášení jsou problém pořadí spouštění, který se bude opakovat. Záznam pojmenovávající spustitelný soubor a jeho řadič umožní další osobě to reprodukovat.

Poté ověřte zamýšlený stav: službu, kterou uživatel potřeboval, a soukromý prostředek, ke kterému se dostává. Vyhněte se rourě, která hledá podřetězec a každou shodu násilně zabíjí, protože zahazuje vše výše uvedené a obvykle ničí důkaz o tom, proč existovaly dvě instance. Pokud se proces stále vrací, nálezem je závada konfigurace nebo pořadí a oprava patří tomu, kdo vlastní chování spouštění klienta.

Související články