我使用的应用程序从特定服务器下载数据,我需要它在下载完成并关闭套接字后休眠。
然而,下载是随机发生的,下载的应用程序会检查更新,并且仅在有更新时才下载
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.29.51005 8.8.8.8.80 ESTABLISHED
假设8.8.8.8是下载数据的服务器。
有没有办法防止计算机在与特定服务器进行 HTTP 会话时进入睡眠状态?
现在请原谅我的伪脚本,但这是我可以尝试的最好方法
netstat -anp tcp
IF Foreign Address = 8.8.8.8 & state = ESTABLISHED
then
WAIT AND CHECK IN 10 MINUTES
else
pmset sleepnow
fi
答案1
从 Mac OS X 10.8 开始,您应该能够使用caffeinate(8)
命令。
尝试caffeinate -s curl http://example.com/some/url
。
答案2
如果您将伪代码转换为 sh,这里是对您的 if 的测试
netstat -anp|grep EST|sed 's/^..p6\? \+[^ ]\+ \+[^ ]\+ \+[^ ]\+ \+\([^ ]\+\) \+.*$/\1/'|grep -q 8.8.8.8 && echo connected
所以你需要一个 while 循环和 asleep 10m
和 apmset 0
但由于我的 osx 盒子在存储中,所以检查我的 re.a 是个好主意。