OS X:如何防止计算机在 http 连接期间休眠

OS X:如何防止计算机在 http 连接期间休眠

我使用的应用程序从特定服务器下载数据,我需要它在下载完成并关闭套接字后休眠。

然而,下载是随机发生的,下载的应用程序会检查更新,并且仅在有更新时才下载

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 是个好主意。

相关内容