79 lines
2.6 KiB
Bash
Executable File
79 lines
2.6 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
export PATH=$PATH:/usr/bin/local
|
|
cname=`scutil --get ComputerName`
|
|
export CNAME=$cname
|
|
pmt=/tmp/pmset-test.txt
|
|
pmv=/tmp/pmset-caffeinatepids.txt
|
|
pidf=/tmp/pmset-test-pid.txt
|
|
dnqf=/tmp/caffeinate-do-not-quit.txt
|
|
|
|
doNotQuit=("Hogwasher" "HandBrake" "PreventUserIdleSleep" "ffmpeg" "Amphetamine") # last val actually not a prog output
|
|
preventButOK=("powerd" "cloudd" "bluetoothd" "coreaudiod")
|
|
# https://textkool.com/en/test-ascii-art-generator?text=idlecheck
|
|
# "ANSI Shadow" font
|
|
echo ""
|
|
echo ""
|
|
echo "// idlecheck_caffeinatestuck"
|
|
echo "----------------------------------------------"
|
|
|
|
#Listed by owning process:
|
|
# pid 30456(caffeinate): [0x00004a4700018c74] 15:16:59 PreventUserIdleSystemSleep named: "caffeinate command-line tool"
|
|
#Details: caffeinate asserting on behalf of '/Users/shughey/Dropbox/bin/presleep' (pid 30455)
|
|
#Localized=THE CAFFEINATE TOOL IS PREVENTING SLEEP.
|
|
# pid 30456(caffeinate): [0x00004a4700078c77] 15:16:59 PreventSystemSleep named: "caffeinate command-line tool"
|
|
#Details: caffeinate asserting on behalf of '/Users/shughey/Dropbox/bin/presleep' (pid 30455)
|
|
#Localized=THE CAFFEINATE TOOL IS PREVENTING SLEEP.
|
|
|
|
pmset -g assertions > ${pmt}
|
|
#cat test-caffeinate.txt > ${pmt}
|
|
|
|
echo "" > ${pmv}
|
|
rm ${dnqf}
|
|
touch ${dnqf}
|
|
|
|
fgrep "PreventUserIdleSystemSleep named" ${pmt} | grep pid | cut -d : -f 1,1 | sed 's/^.*pid \([0-9]\{1,6\}\)(\(.*\)).*$/\1 \2/' > ${pmv}
|
|
|
|
tsize=`stat -f%z ${pmv}`
|
|
#echo "file size: ${tsize}"
|
|
zs=0
|
|
|
|
#cat ${pmt} # test
|
|
|
|
if [ $tsize -gt 0 ]; then
|
|
cat ${pmv} | while read line
|
|
do
|
|
# echo $line
|
|
pid=$(echo $line | awk '{print $1}')
|
|
name=$(echo $line | awk '{print $2}')
|
|
# echo "PID: ${pid}"
|
|
# echo "NAME: ${name}"
|
|
if [[ ! " ${doNotQuit[*]} " =~ [[:space:]]${name}[[:space:]] ]]; then
|
|
# if [[ "$name" != "PreventUserIdleSystemSleep" && "$name" != "cloudd" ]]; then
|
|
if [[ ! " ${preventButOK[*]} " =~ [[:space:]]${name}[[:space:]] ]]; then # is it on the Prevent but sleep anyway list? ex: powerd
|
|
echo "* quitting: ${name} (PreventUserIdleSystemSleep, id ${pid})"
|
|
osascript -e "ignoring application responses" -e "quit app \"$name\"" -e "end ignoring"
|
|
sleep 3
|
|
ps -p ${pid} > ${pidf}
|
|
pfsz=`stat -f%z ${pidf}`
|
|
if [ $pfsz -gt 40 ]; then
|
|
echo " killing pid as script didn't kill it? pid ${pid}"
|
|
sleep 3
|
|
kill -9 $pid
|
|
else
|
|
echo " quit successfully!"
|
|
fi
|
|
fi
|
|
else
|
|
echo "* skipping from Do Not Quit list: ${name}"
|
|
echo ${name} >> ${dnqf}
|
|
fi
|
|
done
|
|
else
|
|
echo "* no PreventUserIdleSystemSleep"
|
|
fi
|
|
|
|
if [ -f "${pmt}" ]; then rm ${pmt}; fi
|
|
if [ -f "${pmv}" ]; then rm ${pmv}; fi
|
|
if [ -f "${pidf}" ]; then rm ${pidf}; fi
|