|
|
#1 |
|
SOLVED IT! [Bash script, caffeinate - help]
Hey there.
I sometimes leave my computer at night uploading files to an FTP server. It sometimes needs to upload just 300MB, sometimes 3GB. In Lion, I had no problems at all. I started uploading, turned screen off (Shift+Control+Eject that is) and went to sleep. The Mini would keep uploading till done, and then would go to sleep too. In Mountain Lion… well, can't really do that anymore. If I start uploading something and then turn the screen off, the Mini will go to sleep in a 1 minute to 5 minutes bracket, no matter what. (Sleep is set to 12 minutes, so weird… And I don't wanna disable it as I like it to go sleep when not in use). I then read about caffeinate, and tried estimating how long it'd take to upload all the files and ran: Code:
$ caffeinate -t 7200 I then decided to create a program which would monitor the upload speed and put the Mini to sleep as soon as it's done. Problem is it isn't working. I mean, the program works but it's like if no caffeinate process was executed. Can't figure out why. Any help? Here's the code: Code:
coffee(){
count=0
while [ $count -lt 5 ]
do
a=`netstat -ibI en1 | awk '$3 ~ /Link/ {print $10}'`
sleep 5
b=`netstat -ibI en1 | awk '$3 ~ /Link/ {print $10}'`
in=$(((b-a)/1024/5))
if [ $in -gt 50 ]
then echo "Downloading at $in KB/s"
echo "Waiting 5 minutes..."
echo ""
count=0
caffeinate -t 300
else
count=$((count+1))
echo "Wait $count of 5... (1 minute)"
echo ""
caffeinate -t 60
fi
done
echo ""
echo "LET'S SLEEP"
echo ""
}
If upload speed is lower than 50KB/s for 5 minutes, then program quits and computer is free to go to sleep as soon as it wants to. As I said though, it isn't working.
__________________
2012 Mac Mini Last edited by dasx; Nov 21, 2012 at 04:16 PM. |
|
|
|
0
|
|
|
#2 |
|
See here:
http://osxdaily.com/2012/08/03/disab...inate-command/ Read the last comment, dated September 14, 2012 at 9:51 am. I'm not running Mtn Lion on anything right now, so I can't confirm this myself. Found by googling: mac os x caffeinate |
|
|
|
0
|
|
|
#3 | |
|
Quote:
That would make sense but when I run the command itself (caffeinate -t xxx) it seems to work like a charm. Always. That's why I can't get around with this.
__________________
2012 Mac Mini |
||
|
|
0
|
|
|
#4 |
|
The caffeinate man page shows:
Code:
caffeinate [-disu] [-t timeout] [utility] [argument ...]
...
If a utility is specified, caffeinate creates the assertions
on the utility's behalf, and those assertions will persist for the dura-
tion of the utility's execution.
...
|
|
|
|
0
|
|
|
#5 | |
|
Quote:
__________________
2012 Mac Mini |
||
|
|
0
|
|
|
#6 |
|
|
0
|
|
|
#7 | |
|
Quote:
__________________
2012 Mac Mini |
||
|
|
0
|
|
|
#8 |
|
|
0
|
|
|
#9 |
|
Found the problem!
Looks like when system is ready to sleep, it doesn't as caffeinate is running. But as soon as it ends and the script should check again if run caffeinate again or not, the system puts itself to sleep. So I modified the code. In red. Code:
coffee(){
caffeinate &
count=0
while [ $count -lt 5 ]
do
a=`netstat -ibI en1 | awk '$3 ~ /Link/ {print $10}'`
sleep 5
b=`netstat -ibI en1 | awk '$3 ~ /Link/ {print $10}'`
in=$(((b-a)/1024/5))
if [ $in -gt 50 ]
then echo "Downloading at $in KB/s"
echo "Waiting 5 minutes..."
echo ""
count=0
sleep 300 #caffeinate -t 300 before
else
count=$((count+1))
echo "Wait $count of 5... (1 minute)"
echo ""
sleep 60 #caffeinate -t 60 before
fi
done
echo ""
echo "LET'S SLEEP"
echo ""
killall caffeinate
}
Now working like a charm.
__________________
2012 Mac Mini |
|
|
|
0
|
![]() |
|
«
Previous Thread
|
Next Thread
»
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
All times are GMT -5. The time now is 12:46 PM.







Linear Mode
