

とあるSNSのbotを制作中なのですが、macの画面を閉じると実行を止めてしまうので、  
nohupというコマンドをつけて実行してみたのですが、それをつけてもスリープ状態？画面を閉じると止まってしまいます。  
どのように書けばコマンドを実行し続けられますか？  
ちなみにpythonの実行ファイルです

情弱ですみません...


CC BY-SA 3.0
2015-07-23T00:17:58.017
12588
2015-10-22T06:53:23.637
2015-07-23T12:15:09.833
8000
10636
question
python macos
macでスリープ状態でもコマンドを実行し続ける方法


Pythonではないですが、RubyOnRailsで、あるサイトをScrapingするバッチをWEBアプリとして作成し、数分おきにcronで開始URLをたたくシステムを作って、自分のmac
book proでテストしていましたが、PCを閉じて１日置いて、次の日開いてみると、閉じている間も処理をしていました。

処理自体は、スレッド化していて、WEBサーバー自体もシェルでバックエンドで起動しています。

おそらく、ターミナルなどで単純にPythonをフロントプロセスとして起動すると閉じるとスリープしてしまいそうですが、バックエンドとしてデーモンのように起動すれば実行し続けるのではないでしょうか？

Pythonでどのような実装なのかわかりませんが、DjangoなどのFWを使っているのであれば、おそらくバックエンド起動のオプションがあるはずです。

追記：

すいません、こちらわたしの勘違いで、MACを閉じた場合は完全にスリープ状態になるので、デーモン化しても処理は止まってしまいますね。

省エネモード（一定時間放置されてスクリーンセーバーが表示されている場合）には、処理が継続するのは確認しました。

なので、画面を閉じずに放置している分には、少なくともデーモンプロセスは動くとおもいます。

ちなみに、Pythonで３秒ごとに現在時刻をファイルに書き込む処理を書いて、ターミナルから実行してみましたが、スリープ状態になっても画面を開けると処理は勝手に再開しますが、このことと上記の画面をあけたまま放置する運用で、普段使うmacであればわりと継続的に処理は続けられると思うのですが、これでは解決にはならないんですかね？


CC BY-SA 3.0
2015-07-23T02:10:57.903
12593
2015-07-24T05:38:09.397
2015-07-24T05:38:09.397
9260
9260
12588
answer


タイトルに書かれていることに忠実に回答すると、スリープ状態でコマンドを実行するのは **不可能**
です。スリープ状態では、メインメモリの状態は保持されていますがCPUやハードディスクは動いていないので、プログラムは実行できません。文字通り寝ている状態です。

起きている時しかプログラムを実行できないので、バックグラウンドでプログラムを実行したい場合はスリープ状態にしないようにするか、何らかの方法でスリープ状態を解除する必要があります。

ちなみに、MacにはPowerNapという機能があり、スリープ状態でも一時的に起動してプログラムをバックグラウンドで実行する機能がありますが、これはOSのサービス専用なので残念ながら任意のプログラムを実行するようなことはできません。


CC BY-SA 3.0
2015-07-23T12:06:55.700
12621
2015-07-23T12:06:55.700
3639
12588
answer