4

I need to know how to write a command or script to kill the CCLibrary and CCXProcess processes. They are part of Adobe's Creative Cloud, and since their previous update they keep respawning and running my CPU at 100%.

Until a fix comes out, I'd like a quick way to kill it, without having to go through Activity Monitor.

When I try

sudo killall CCLibrary

I get "No matching processes were found".

I can use ps -ef to find the PID number (eg 9548) I can grep it, e.g.

ps -ef | grep CCLibrary.app

which returns two activities, the CCLibrary and the grep itself.

$ 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 

Then I can "kill" based on the PID number

But how can I write a script to find that PID as a variable, then kill it?

2
  • Comments are not for extended discussion; this conversation has been moved to chat.
    – bmike
    Dec 8, 2015 at 13:00
  • I would encourage collaboration in the answer space since working through the answer will be helpful. Chat works too :).
    – bmike
    Dec 8, 2015 at 13:01

2 Answers 2

6

Rather than continuously killing the processes, there's a way to uninstall Adobe's Creative Cloud application manager, mentioned in this thread.

  1. Download Adobe's Creative Cloud Cleaner from this link: http://download.macromedia.com/SupportTools/Cleaner/mac/AdobeCreativeCloudCleanerTool.dmg

  2. Then select ONLY Creative Cloud

  3. Then "uninstall selected" and reboot

And your fans will finally fall silent. The other apps still work.

1
  • This not only helped me eliminate OP's process, but Adobe Creative Desktop as well. Cheers.
    – chb
    Jan 15, 2019 at 12:37
3

I'll save the "why this is a bad idea for after the answer" but here are some tricks you might use. Since not everyone can test with CC, let's pick on Safari for this example:

ps -ef | grep "Safari "

First, I add a space after the program name to make sure it's not a part of the path. Next, use a square brackets around one character of the process name, that keeps grep from finding itself. (there's probably a more elegant way to do this, but this hack works OK for me)

ps -ef | grep "[S]afari "

This makes the grep command not match Safari - the brackets would let you search for [SZ]afari and match either Safari or Zafari for instance. We just want to mess up grep and not find alternate characters for position 1.

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

Strip out the second white space separated word to get the PID. Here's how that all looks in one session to debug the commands we are using:

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

Notice I used echo to just pass the syntax of the command - if I didn't echo it, then the kill command would have actually run and killed the Safari program I'm using to write this answer.

¯\_(ツ)_/¯

So, now you should be comfortable writing a one line script to kill the one process (hopefully) and we come to the bad idea portion of the answer. It would be better to use killall server.js if you don't ever anticipate running other servers that you don't want killed.

  • What if someone makes another program or a script with the same name, now you're killing that too or killing who knows what the awk command decides to target?
  • Also, we haven't even gotten in to how to schedule the script. Do you run it every 5 minutes, once an hour, and worse, how much damage does it do to whatever work it's supposedly doing on the CPU right now.
2
  • Hi, thanks for the suggestion... Taking your steps one by one: When I run ps -ef | grep "Safari " I get: 501 10184 9407 0 2:17pm ttys001 0:00.00 grep Safari i.e. only the grep command.. (Safari is running on process 10165). I am using Yosemite - maybe this makes a difference?
    – tomh
    Dec 8, 2015 at 14:18
  • @tomh That could be the case. Safari is a bad example since there are so many matches. I chose it since every time I did this in the past, I regretted trolling ps to then take action. I still did it on occasion, but I logged everything to syslog and cleaned up the mess as soon as I could. Ping me in Ask Different Chat and we can take another stab.
    – bmike
    Dec 8, 2015 at 14:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .