Come riavviare OS X avviato senza riavviare?


14

Quando eseguo Zotero / Firefox, spesso si bloccano e mi rimangono processi zombi; dopo questo non posso aprire nuove istanze di Zotero o Firefox. Voglio sbarazzarmi di questi processi di zombi piuttosto che riavviare, quindi per <pid>il processo di zombi,

$ ps -p <pid> -o ppid=

mi dà il <parent_pid>e

ps aux | awk -v PID=<parent_pid> '$2 == PID {print $0}'

mi dice che il processo genitore è /sbin/launchdper l'utente crippledlambda.

C'è un modo per riavviarlo senza uccidere il mio sistema?

sudo kill -1 <parent_pid>

non fa nulla. Ho provato a scrivere questo in uno script ed eseguirlo con sudo:

for i in `launchctl list | grep launchd | awk -v PID=<parent_pid> '$1==PID { print $NF }'`; do `launchctl stop $i && launchctl start $i` ; done

e questo ovviamente (?) mi lascia con uno schermo grigio che non risponde, quindi devo riavviare comunque. Grazie in anticipo per i vostri suggerimenti.


Perché stai uccidendo launchd invece dei processi rimanenti stessi? launchd è una parte fondamentale della sessione dell'utente; anche se potessi riavviarlo, la nuova istanza non sarebbe il genitore di tutti gli altri processi di cui è responsabile ... cose come il Finder, il Dock, ecc.
Gordon Davisson,

@Gordon, non puoi uccidere i processi di zombi, quindi devi cercare il genitore, a meno che non mi manchi qualcosa.
hatmatrix,

Sono veri zombi (cioè processi che sono usciti, ma il cui stato di uscita non è stato letto)? Se lo sono, qualcosa di molto più profondo è sbagliato, poiché launchddovrebbe sempre leggere immediatamente gli stati di uscita dei suoi figli. Se non sono veramente zombi, allora dovresti ucciderli. In entrambi i casi, uccidere launchdcauserà più problemi di quanti ne risolva.
Gordon Davisson,

Risposte:


17

Il modo corretto per arrestare e avviare i daemon di lancio è launchctl unload .

Per esempio:

È possibile interrompere un servizio daemon di avvio utilizzando il sottocomando di scarico di launchctl .

$ sudo launchctl unload /System/Library/LaunchDaemons/<daemon name>.plist

Per avviare un demone di avvio disabilitato o interrotto:

$ sudo launchctl load /System/Library/LaunchDaemons/<daemon name>.plist

★ Fai attenzione a disabilitare i demoni di lancio a casaccio - specialmente quelli Apple ufficiali; può potenzialmente rendere il sistema non avviabile fino all'avvio in modalità provvisoria e alla riattivazione manuale. Non uccidi un launchctl come un normale processo perché può potenzialmente uccidere il tuo sistema come hai sperimentato.

> maggiori informazioni su launchctl qui . (Pagina man di launchctl di Apple)


Scusa, com.apple.bsd.launchdadd.plistvero? Non vedo launchdesattamente. E grazie per l'avvertimento ...
hatmatrix,

Per riferimento futuro, anche questi comandi funzionano con scrun simctl spawn <sim_id> sudo launchctl unload …. I file del plist sono sotto$(xcode-select -p)/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/LaunchDaemons/
Leo Natan,

3

Dalla pagina man launchd:

Non è possibile richiamare direttamente launchd.

Quindi anche se tu potessi fermarlo non saresti in grado di avviarlo, quindi la risposta è che non c'è modo.


1
Perché il downvote? Il mio post risponde correttamente alla domanda posta. Concesso l'altro post è più costruttivo ma in realtà non riesce a rispondere alla domanda effettiva come da titolo del post!
ostergaard

L'altro post risponde alla domanda.
DavidPostill

2
No, dice come riavviare i demoni non lanciati da soli.
ostergaard

3
lol - ed è quell'atteggiamento, quell'accuratezza non conta più, che spiega il lento declino della qualità su SO. Felice anno nuovo!
ostergaard

1
Peccato che non posso sottovalutare i commenti. Non solo questa risposta è corretta, ma l'altra risposta non riesce a rispondere alla domanda. Non si tratta di demoni avviati da launchd, ma di processi zombi ereditati da launchd quando un processo che non risponde è stato forzatamente terminato. Ho lo stesso problema e nessun demone sanguinante da uccidere poiché è un browser che attiva il comportamento difettoso in launchd. Rispondere con "qualunque cosa" mi fa bollire il sangue come le stesse persone che hanno trovato utile la risposta non riescono a capire la domanda in primo luogo e questo è peggio di un ordine di grandezza.
SaltwaterC
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.