私が使用しているアプリケーションは特定のサーバーからデータをダウンロードし、ダウンロードが完了してソケットが閉じた後にスリープモードに入る必要があります。
ただし、ダウンロードはランダムに発生し、ダウンロードしたアプリはアップデートを確認し、利用可能なアップデートのみをダウンロードします。
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
sleep 10m
したがって、whileループとaとaが必要ですpmset 0
が、私のosxボックスが保存されているので、私のre.aをチェックすることをお勧めします。