Come faccio a uccidere programmaticamente il processo CCLibrary dal PID?

4

Ho bisogno di sapere come scrivere un comando o uno script per uccidere i processi CCLibrary e CCXProcess. Fanno parte del Creative Cloud di Adobe e dal loro precedente aggiornamento continuano a rigenerare ea far funzionare la mia CPU al 100%.

Finché non viene pubblicata una correzione, mi piacerebbe un modo rapido per eliminarlo, senza dover passare da Monitoraggio attività.

Quando provo

sudo killall CCLibrary

Ottengo "Nessun processo corrispondente trovato".

Posso usare ps -ef per trovare il numero PID (ad es. 9548) Posso grep, ad es.

ps -ef | grep CCLibrary.app

che restituisce due attività, CCLibrary e grep stesso.

$ ps -ef|grep CCLibrary 
501 9621 1 0 12:18pm ?? 51:51.71 /Applications/Utilities/Adobe Creative Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../libs/node /Applications/Utilities/Adobe Creative Cloud/CCLibrary/CCLibrary.app/Contents/MacOS/../js/server.js 
501 9818 9407 0 1:10pm ttys001 0:00.00 grep CCLibrary 

Quindi posso "uccidere" in base al numero PID

Ma come posso scrivere uno script per trovare quel PID come variabile, quindi ucciderlo?

    
posta tomh 08.12.2015 - 13:20
fonte

2 risposte

5

Invece di uccidere continuamente i processi, c'è un modo per disinstallare il gestore di applicazioni Creative Cloud di Adobe, menzionato in questa discussione .

  1. Scarica Adobe Creative Cloud Cleaner da questo link: link

  2. Quindi seleziona SOLO Cloud Creativo

  3. Quindi "Disinstalla selezionato" e riavvia

E i tuoi fan alla fine si zittiranno. Le altre app funzionano ancora.

    
risposta data 09.12.2015 - 11:55
fonte
3

Salverò "perché questa è una cattiva idea per dopo la risposta", ma qui ci sono alcuni trucchi che potresti usare. Dal momento che non tutti possono provare con CC, prendiamo su Safari per questo esempio:

ps -ef | grep "Safari "

Per prima cosa, aggiungo uno spazio dopo il nome del programma per assicurarmi che non faccia parte del percorso. Successivamente, usa parentesi quadre attorno a un carattere del nome del processo, che impedisce a grep di trovarsi. (probabilmente c'è un modo più elegante per farlo, ma questo hack funziona per me)

ps -ef | grep "[S]afari "

Questo fa in modo che il comando grep non corrisponda a Safari: le parentesi ti consentono di cercare [SZ]afari e corrispondono a Safari o Zafari per esempio. Vogliamo solo rovinare grep e non trovare caratteri alternativi per la posizione 1.

ps -ef | grep "[S]afari " | awk '{print $2}'

Elimina la seconda parola separata dallo spazio bianco per ottenere il PID. Ecco come appare tutto in una sessione per eseguire il debug dei comandi che stiamo utilizzando:

mac:~ me$ ps -ef | grep Safari
  501   300     1   0 Wed06PM ??        45:03.88 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
  501   520     1   0 Wed06PM ??         1:08.95 /usr/libexec/SafariCloudHistoryPushAgent
  501   590     1   0 Wed06PM ??         1:39.35 /System/Library/PrivateFrameworks/SafariSafeBrowsing.framework/com.apple.Safari.SafeBrowsing.Service
  501   608     1   0 Wed06PM ??         0:10.31 /System/Library/PrivateFrameworks/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.SearchHelper.xpc/Contents/MacOS/com.apple.Safari.SearchHelper
  501  2476     1   0 Wed06PM ??         0:01.56 /System/Library/PrivateFrameworks/SafariShared.framework/Versions/A/XPCServices/com.apple.Safari.ImageDecoder.xpc/Contents/MacOS/com.apple.Safari.ImageDecoder
  501 38802     1   0 Thu01PM ??         0:02.41 /usr/libexec/SafariNotificationAgent
  501 92847 90892   0  7:27AM ttys013    0:00.00 grep Safari
mac:~ me$ ps -ef | grep "Safari "
  501   300     1   0 Wed06PM ??        45:04.31 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
  501 92875 90892   0  7:27AM ttys013    0:00.01 grep Safari 
mac:~ me$ ps -ef | grep "[S]afari "
  501   300     1   0 Wed06PM ??        45:04.57 /Applications/Safari.app/Contents/MacOS/Safari -psn_0_40970
mac:~ me$ ps -ef | grep "[S]afari " | awk '{ print $2 }'
300
mac:~ me$ echo kill 'ps -ef | grep "[S]afari " | awk '{ print $2 }''
kill 300

Notate che ho usato echo per passare semplicemente la sintassi del comando - se non l'ho fatto eco, allora il comando kill avrebbe effettivamente eseguito e ucciso il programma Safari che sto usando per scrivere questa risposta.

¯\_(ツ)_/¯

Quindi, ora dovresti sentirti a tuo agio scrivendo uno script a una riga per uccidere il processo (si spera) e arriviamo alla parte cattiva dell'idea della risposta. È preferibile utilizzare killall server.js se non si prevede di eseguire altri server che non si desidera vengano eliminati.

  • Che cosa succede se qualcuno crea un altro programma o una sceneggiatura con lo stesso nome, ora lo stai uccidendo o uccidendo chi sa cosa il comando awk decide di scegliere come target?
  • Inoltre, non siamo nemmeno arrivati a come programmare lo script. Lo esegui ogni 5 minuti, una volta all'ora e, peggio, quanto danno fa a qualsiasi lavoro che si suppone stia facendo sulla CPU in questo momento.
risposta data 08.12.2015 - 14:33
fonte

Leggi altre domande sui tag