Mi sono imbattuto in questo oggi su un iMac di un mese. L'unica cosa che non è interessante è il mio account, che è stato replicato su 5 macchine e 12 principali versioni di MacOS usando Migration Assistant quando possibile, lasciandolo con un bel po 'di cruft in ~ / Library / Preferences /. Sfortunatamente, nelle ultime versioni Apple ha reso complicato ripulire efficacemente quella directory eliminando i file perché cfprefsd
gestisce le informazioni sulle preferenze reali e devi parlarci bene con l' defaults
utilità.
Ad ogni modo, adoro il fatto che ogni volta che provo a cambiare la preferenza ricevo una sequenza di voci di registro come questa:
Jul 14 18:14:03 extravagant sharedfilelistd[411] <Critical>: [default] [<CFString 0x7fff77ea0e00 [0x7fff77f58440]>{contents = "com.apple.LSSharedFileList.RecentApplications"}] List write failed invalid info items: (null) properties: (null)
Jul 14 18:14:03 extravagant sharedfilelistd[411] <Error>: -[ListStore writeListItems:properties:withListIdentifier:notificationHander:] [com.apple.LSSharedFileList.RecentApplications] List write failed invalid info items: (null) properties: (null)
Jul 14 18:14:05 extravagant com.apple.preference.general.remoteservice[85562] <Warning>: Error getting number of recent items of type 2, LSSharedFileListCopyProperty returned NULL
Jul 14 18:14:11 extravagant com.apple.preference.general.remoteservice[85562] <Warning>: New number of recents: 30
Jul 14 18:14:11 extravagant com.apple.preference.general.remoteservice[85562] <Warning>: Error getting number of recent items of type 1, LSSharedFileListCopyProperty returned NULL
Jul 14 18:14:11 extravagant com.apple.preference.general.remoteservice[85562] <Warning>: Error getting number of recent items of type 2, LSSharedFileListCopyProperty returned NULL
Jul 14 18:14:11 extravagant com.apple.preference.general.remoteservice[85562] <Warning>: Error getting number of recent items of type 3, LSSharedFileListCopyProperty returned NULL
Jul 14 18:14:13 extravagant com.apple.xpc.launchd[1] (com.apple.preference.general.remoteservice[85562]) <Notice>: Service exited due to signal: Killed: 9
Inoltre, sia defaults domains
alcune che una dozzina di file in Preferenze mi hanno detto che la maggior parte delle applicazioni con un dominio predefinito come com.example.appname aveva anche un dominio predefinito come com.example.appname.LSSharedFileList che conteneva elenchi di file utilizzati di recente. Tranne il fatto che non sono stati usati file di recente. Nessuno dei file * .LSSharedFileList.plist era cambiato dalla mia migrazione dalla mia vecchia macchina Yosemite, e nemmeno com.apple.recentitems.plist. Quindi ho pulito casa eseguendo questi comandi all'interno ~ / Library / Preferences /:
defaults delete com.apple.recentitems
rm com.apple.recentitems.plist*
Il defaults
comando dice cfprefsd
di rimuovere tutte le impostazioni in quel dominio, che lascia un file .plist logicamente vuoto a 42 byte e un file .plist.lockfile a 0 byte che il rm
comando rimuove.
defaults find LSSharedFileList |grep 'keys in domain .*LSShared'|cut -d"'" -f2 |xargs -L1 defaults delete
rm *LSSharedFileList.plist*
Meno ovvio, ma essenzialmente la stessa cosa per tutti i defaults
domini con LSSharedFileList nei loro nomi
find . -name "*.plist" -print0 |xargs -0 -L1 plutil -lint |grep -v ': OK$'|cut -d: -f1|sed 's/.*/"&"/' |xargs rm
Ancora meno ovvio, ma apparentemente cruciale. Questa pipeline trova tutti i file * .plist nella directory corrente (che era ~ / Library / Preferences /,) verifica la validità di ciascuno plutil -lint
, analizza i nomi dei file di quelli che non sono "OK", li richiede per proteggere da spazi incorporati e simili, e li rimuove tutti. Nel mio caso i file * .plist non validi erano tutti file antichi a 0 byte per elementi che non potevano comunque essere eseguiti su El Cap, quindi ero sicuro di non eliminare alcuna informazione effettiva. YMMV !!
find . -size 42c -name "*plist" -delete
Questo ha spazzato via qualsiasi file * .plist che era lungo 42 byte, la dimensione di un plist logicamente vuoto in formato binario. Ho avuto alcuni di quelli in giro e potrebbero aver causato la denuncia sharedfilelistd
.
killall sharedfilelistd
Ciò ha chiuso l'istanza di sharedfilelistd
esecuzione con il mio account. Il sistema ha riavviato automaticamente una nuova istanza. Non sono sicuro che fosse necessario, ma mi è sembrato prudente da quando avevo appena cancellato un sacco di informazioni dal sottosistema delle preferenze relative al vecchio modo di fare ciò che sharedfilelistd
apparentemente fa in El Cap.
NOTA: Quei 7 comandi sono la versione abbreviata di ciò che ho fatto che aveva senso e produceva effetti, sparpagliati in 3 ore di ricerca, prova e ricerca di informazioni sharedfilelistd
inutili.
Vale anche la pena notare che qui non è sudo
coinvolto, perché ero nel mio ~ / Library / Preferences /, manipolando il mio regno delle preferenze. Il menu Voci recenti e quindi le sue impostazioni sono specifiche dell'utente, quindi ovunque tale impostazione sia memorizzata (mai elaborata ...) deve essere specifica anche per l'utente, non qualcosa che richiede il root da correggere. C'è una risposta precedente che include un'enorme autorizzazione / ACL / wipe flag inspiegabile, eseguita con sudo, che non ha nemmeno funzionato per l'autore e potrebbe causare gravi danni sistemici. Non è niente del genere. Si noti inoltre che non richiede la disconnessione, il riavvio, l'avvio in modalità di ripristino o l'esecuzione di qualsiasi altra cosa che possa essere dannosa.