2016-07-08 4 views
0

私は仕事でWebページの内容をチェックして変更を報告するPythonスクリプトを持っています。それは5分ごとにサイトをきちんとチェックしてから、私たちの会社はいくつかのセキュリティソフトウェアを切り替えました。スクリプトは実行されますが、1時間ほど後に停止します。それは一貫していない、時には数時間ですが、約1時間は平均と思われる。シェルで報告されるエラーは発生していません。これを自動的に再開させる方法はありますか?コードは以下の通りですが、関数を呼び出してからsleepコマンドを呼び出すだけでしたが、デバッグのためのforループとprint行を追加して、何時停止しているかを確認しました。何をしたいコンピュータのセキュリティが変更された後にPythonスクリプトが停止する

import time 
import datetime 
import txtWip 

while True: 
    txtWip.main() 
    for i in range(1, 300,100): 
     current_time = time.strftime(r"%d.%m.%Y %H:%M:%S", time.localtime()) 
     print(current_time) 
     time.sleep(100) 
+1

スクリプトが初めて正常に実行され、しばらくして失敗した場合は、[cronジョブ](http://www.unixgeeks.org/security/newbie/unix/cron-1.html)を設定することをお勧めします。 )。管理が簡単です。 –

+1

実行の間にスリープさせるのではなく、スクリプトを実行するためにスケジューラを使用することを強くお勧めします。 – Munir

+0

よろしくお願いいたします。私はそれらを調べます。 – NoobLord

答えて

0

はデーモンとして実行するにはあなたのプログラムのためである[1]:もはや普通のSIGKILLあるいはSIGHUPに反応するバックグラウンド・プロセス。また、このデーモンを終了時に再起動して、効果的に永久に実行させたいとします。

のではなく、独自のデーモンスクリプトを作成、それは次のいずれかの操作を実行するためにはるかに簡単です:場合は、Linux上で

  • を、Upstartを使用しています。

    これは、マシンの稼動中にすべてのプロセスを監督するinit.dデーモンの代わりとなります。予期しないクラッシュが発生した場合にプロセスを再生成することができます。an example herePython-specific example hereを参照してください。このプラットフォームでのこのようなタスクのゴールドスタンダードです。

    特定のUbuntuリリースでは、systemdが放蕩息子であり、代わりに使用する必要があります。

    upstartを使いこなす必要のないexternal bash scriptの代替も可能です。

  • Windows上であれば、適切に


runitをインストールおよび設定Macの場合は、次のは、クロスプラットフォームではありません[1] ReStartMe

  • を使用アドバイス。これを実際にa true daemonとして実行する必要がある場合とそうでない場合があります。単純なバックグラウンドジョブ(つまり、最後にpython <file_name>.pyを実行したときに&を追加して呼び出す)は十分です。これは、実行した端末が終了したときに終了しますが、Linuxユーティリティscreenを使用して回避できます。

  • 関連する問題