-
-
Save jivanpal/30af7741721e597575e10f5ef8560062 to your computer and use it in GitHub Desktop.
#!/bin/bash | |
if [ "$1" = "-s" ] || [ "$1" = "--show" ]; then | |
show=true | |
else | |
show=false | |
fi | |
if $show || [ "$1" = "-v" ] || [ "$1" = "--verbose" ]; then | |
verbose=true | |
else | |
verbose=false | |
fi | |
kill_list="" | |
for i in $(pgrep -i adobe); do | |
if $verbose; then | |
echo -n "PID $i -- " | |
ps -p "$i" -o command $($show || echo -c) | awk 'ORS=""; NR==2' | |
fi | |
ps -p "$i" -o command | awk 'NR==2' | grep -E '^/Applications/Adobe XD/Adobe XD\.app/Contents/MacOS/Adobe XD$' > /dev/null | |
if [ $? -eq 1 ] ; then | |
$verbose && echo " -- KILL" | |
kill_list="$kill_list $i" | |
else | |
$verbose && echo " -- KEEP ALIVE" | |
fi | |
done | |
if [ -z "$kill_list" ] ; then | |
$verbose && echo "Nothing to kill" | |
else | |
if $verbose; then | |
echo "KILL_LIST = $kill_list" | |
set -x | |
fi | |
$show || sudo kill -TERM $kill_list | |
fi |
Hi @jivanpal here my contribute with some real path. See if you need more
Adobe Applications path
Acrobat DC
realpath ~/Applications/Adobe Acrobat DC/Adobe Acrobat.app
➜ ~ cd /Applications/Adobe\ Acrobat\ DC
➜ ~ pwd
/Applications/Adobe Acrobat DC
➜ ~ ls -lah
total 176
drwxrwxr-x@ 6 root wheel 192B Jun 10 18:26 .
drwxrwxr-x 30 root admin 960B Jun 11 23:48 ..
drwxrwxr-x 3 root wheel 96B Oct 3 2019 Acrobat Distiller.app
-rw-r--r--@ 1 root wheel 1.1K Jun 10 18:26 Acrobat Uninstaller
drwxrwxr-x 3 root wheel 96B Jun 10 18:26 Adobe Acrobat.app
-rw-r--r--@ 1 root wheel 0B Jun 10 18:26 Icon?
➜ ~ realpath /Applications/Adobe\ Acrobat\ DC/Adobe\ Acrobat.app
/Applications/Adobe Acrobat DC/Adobe Acrobat.app
Creative Cloud (note is a redirect into a more complex structure)
realpath ~/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app
➜ ~ cd /Applications/Adobe\ Creative\ Cloud
➜ ~ pwd
/Applications/Adobe Creative Cloud
➜ ~ ls -lah
total 200
drwxr-xr-x@ 6 root admin 192B May 12 05:47 .
drwxrwxr-x 30 root admin 960B Jun 11 23:48 ..
lrwxr-xr-x 1 root admin 82B Oct 3 2019 .Uninstall Adobe Creative Cloud_bkp -> /Applications/Utilities/Adobe Creative Cloud//Utils/Creative Cloud Uninstaller.app
lrwxr-xr-x 1 root admin 67B May 12 05:47 Adobe Creative Cloud -> /Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app
-rw-r--r--@ 1 root admin 0B May 12 05:47 Icon?
lrwxr-xr-x 1 root admin 82B Oct 3 2019 Uninstall Adobe Creative Cloud -> /Applications/Utilities/Adobe Creative Cloud//Utils/Creative Cloud Uninstaller.app
➜ ~ realpath /Applications/Adobe\ Creative\ Cloud/Adobe\ Creative\ Cloud
/Applications/Utilities/Adobe Creative Cloud/ACC/Creative Cloud.app
Photoshop 2021
realpath ~/Applications/Adobe Photoshop 2021/Adobe Photoshop 2021.app
➜ ~ cd /Applications/Adobe\ Photoshop\ 2021
➜ ~ pwd
/Applications/Adobe Photoshop 2021
➜ ~ ls -lah
total 160
drwxr-xr-x@ 9 root wheel 288B Jun 13 03:30 .
drwxrwxr-x 30 root admin 960B Jun 11 23:48 ..
drwxr-xr-x 3 root wheel 96B Jun 13 03:29 Adobe Photoshop 2021.app
drwxr-xr-x 3 root wheel 96B Jun 13 03:29 Configuration
-rw-r--r--@ 1 root wheel 0B Jun 13 03:30 Icon?
drwxr-xr-x 3 root wheel 96B May 18 10:58 Locales
drwxr-xr-x@ 4 root wheel 128B Jun 13 03:30 Plug-ins
drwxr-xr-x 39 root wheel 1.2K Jun 13 03:30 Presets
-rw-r--r--@ 1 root wheel 948B Jun 13 03:30 Uninstall Adobe Photoshop 2021
➜ ~ realpath /Applications/Adobe\ Photoshop\ 2021/Adobe\ Photoshop\ 2021.app
/Applications/Adobe Photoshop 2021/Adobe Photoshop 2021.app
Utilities folder structure
Because Creative Cloud
has redirect, tell us if you need any other real path
➜ ~ cd /Applications/Utilities
➜ ~ pwd
/Applications/Utilities
➜ ~ ls -lah
total 0
drwxr-xr-x 9 root wheel 288B Jun 9 01:31 .
drwxrwxr-x 30 root admin 960B Jun 11 23:48 ..
-rw-r--r-- 1 root wheel 0B Jan 1 2020 .localized
drwxr-xr-x 14 root wheel 448B May 12 05:47 Adobe Application Manager
drwxr-xr-x 8 root wheel 256B May 12 05:47 Adobe Creative Cloud
drwxrwxr-x 3 root wheel 96B Jun 9 01:31 Adobe Creative Cloud Experience
drwxr-xr-x 4 root wheel 128B Apr 23 22:15 Adobe Genuine Service
drwxrwxr-x 4 root admin 128B Jun 13 03:30 Adobe Installers
drwxrwxr-x 5 root wheel 160B Jun 8 01:35 Adobe Sync
So, I've tweaked what I believe is a better catch-all GREP for many Creative Cloud apps, based on standard adobe installations and naming conventions.
ps -p "$i" -o command | awk 'NR==2' | grep -E '^\/Applications\/(Adobe( (\w)+)+)( [0-9]{4})?\/Adobe( (\w)+)+( [0-9]{4})?\.app\/Contents\/MacOS\/(\1|AdobeAcrobat|After Effects)$'
So, I've tweaked what I believe is a better catch-all GREP for many Creative Cloud apps, based on standard adobe installations and naming conventions.
ps -p "$i" -o command | awk 'NR==2' | grep -E '^\/Applications\/(Adobe( (\w)+)+)( [0-9]{4})?\/Adobe( (\w)+)+( [0-9]{4})?\.app\/Contents\/MacOS\/(\1|AdobeAcrobat|After Effects)$'
This seems to work really well. The only thing I noticed is that it didn't catch CCLibrary.app
.
How can I undo the script?
I did simply rename "CCXProcess.app" to "CCXProcess-.app", and it works.
No adobecrdaemon is keeping running now.
I am using iMac.
@HarithSami The script just kills currently running processes, it doesn't make any permanent changes to the system configuration, so there is nothing to undo. If you restart Creative Cloud or just open one of the Creative Cloud apps, the daemons should be started again.
Here's a really great kill-apps
helper from sunknudsen/privacy-guides that can be added to .zshrc
:
# Kill apps that match string
function kill-apps() {
IFS=$'\n'
red=$(tput setaf 1)
normal=$(tput sgr0)
if [ -z "$1" ] || [ "$1" = "--help" ]; then
printf "%s\n" "Usage: kill-apps string"
return 0
fi
printf "%s\n" "Finding apps that match “$1”…"
sleep 1
processes=($(pgrep -afil "$1"))
if [ ${#processes[@]} -eq 0 ]; then
printf "%s\n" "No apps found"
return 0
else
printf "%s\n" "${processes[@]}"
printf "$red%s$normal" "Kill found apps (y or n)? "
read -r answer
if [ "$answer" = "y" ]; then
printf "%s\n" "Killing found apps…"
sleep 1
for process in "${processes[@]}"; do
echo $process | awk '{print $1}' | xargs sudo kill 2>&1 | grep -v "No such process"
done
printf "%s\n" "Done"
return 0
fi
fi
}
paste above script into ~/.zshrc
and then run source ~/.zshrc
. Then you can just use commands like kill-apps adobe
to kill all adobe related stuff.
@hrvstr, modify the
grep
on line 17 (now line 23, I've edited the script) as appropriate, e.g. if you use PhotoShop and XD, something like the following:I don't know the actual paths for anything other than XD, though, and don't fancy installing each app to find out/confirm my guess, so the above is just indicative.
I've modified the script so you can run it with
--show
or-s
to just show the full paths of all the found processes and the arguments they were called with, e.g../kill-adobe-daemons.sh --show
.Doing that on my system with XD running, for example, gives me the following:
The output contains arguments passed to each running app found by the search, so you will need to remove any that are present, e.g. if I wanted to keep Adobe Installer running, I'd look at the following line:
It's fairly clear from that output that the path is
/Library/Application Support/Adobe/Adobe Desktop Common/ElevationManager/Adobe Installer
; the--pipename
stuff is an argument passed to the app. Thus, to also have that kept alive, I'd change thegrep
line to read:There, I've changed the
$
at the end to( |$)
so that it doesn't matter whether a particular app is called with or without any arguments; that regex handles both cases.Running with
--show
after making that modification then shows the same output, except the line for Adobe Installer says-- KEEP ALIVE
instead of-- KILL
at the end, confirming what it will do when run without--show
.You could also just be very loose with the regex used by
grep
for the matching search, using something like:The
-E
is changed to-Ei
there so that thegrep
is case-insensitive. Thus, if you get the casing ofPhotoshop
/PhotoShop
wrong, for example, it doesn't matter. The only potential caveat of using a loose search like this is that there might be other processes with both "adobe" and "photoshop" in their path/arguments (I don't know if this will actually be the case for whatever CC apps you're running), so you run the risk of matching those and keeping them, which may be undesirable.Perhaps a better way to do things is to use
-c
in theps
that's passed to thegrep
which actually does the matching, too, so that only the name of the executable itself is needed. The following might then do exactly what you need:(Apologies for the extremely long comment, this was just a stream of consciousness, really.)