Quando apro il mio monitor attività, ho un processo zsh che prende tutta la mia CPU. È normale? Ho iTerm e oh-my-zsh installati ma non mi aspetto un comportamento normale.
Qualche idea?
Quando apro il mio monitor attività, ho un processo zsh che prende tutta la mia CPU. È normale? Ho iTerm e oh-my-zsh installati ma non mi aspetto un comportamento normale.
Qualche idea?
Risposte:
Anche io incontro questo problema. Implica sempre installd
, e soprattutto, l' installd
installazione / l'aggiornamento di app Apple, come iWork (IIRC è esclusiva di iWork; almeno devo ancora imbattermi in un'app di terze parti).
Credo che non abbia nulla a che fare con iTerm2 o oh-my-zsh (anche se io uso entrambi). Quello che credo è che questo è un problema di compatibilità della shell - lo script di installazione di Apple chiama probabilmente la shell predefinita
$SHELL -c command...
È stato testato bash
ma non zsh
, quindi quando zsh
viene chiamato in questo modo, sorgono sottili problemi di compatibilità della shell. Quando controlli il processo offensivo (purtroppo Activity Monitor, AFAIK, non ti mostra i comandi completi; io lo uso htop
per questo e potresti usare ps
o altro), vedrai cose come
zsh -c defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
che sostiene la mia ipotesi (beh, la mia ipotesi è stata effettivamente derivata da queste osservazioni, per essere precisi). * Pertanto, la soluzione è semplicemente eseguire il comando da soli, in questo caso
defaults delete com.apple.helpd com.apple.helpd.sdmMapsCreated
Quindi uccidi i processi offensivi. installd
passa automaticamente (probabilmente al prossimo processo bloccato come questo). Dopo più turni di rettifica, l'installazione verrà completata correttamente. So che questo è fastidioso, ma questo è l'unico modo in cui ho scoperto di funzionare (in modo affidabile).
* In realtà è al di là di me come zsh -c
rimane bloccato su cose come defaults delete
. Non sono sicuro se è con il mio ambiente. (Ho messo i coreutils GNU e simili di fronte alle cose di BSD nel mio PERCORSO, ma sono abbastanza sicuro di non aver mai fatto casini default
.) Forse default
usi internamente i programmi di utilità BSD? Ma ancora una volta, posso eseguire lo stesso comando nel mio terminale con zsh, in modo interattivo o non interattivo, bene. Questo è davvero sconcertante (la soluzione sopra non è interessata). Qualsiasi input è il benvenuto.
ps
strumento standard , esegui semplicemente ps uaxwww | grep zsh
: 1. controlla cosa sta controllando la CPU; 2. eseguirlo manualmente; 3. uccidere il processo; 4. ripeti
-c
analisi di compatibilità suona bene, anche se non riesco a capire perché sia rimasto bloccato, invece di fallire e tornare. Sto provando a riprodurlo da solo. Da dove hai installato i coreutils GNU? E per caso stai usando un Homebrew o altri non predefiniti zsh
?