我需要每分鐘運行一次python腳本(job.py)。如果腳本已經在運行,則該腳本不能啓動。它的執行時間可以在10秒到幾個小時之間。只有在沒有運行的情況下才使用cron運行python腳本
所以我把我的crontab中:
* * * * * root cd /home/lorenzo/cron && python -u job.py 1>> /var/log/job/log 2>> /var/log/job/err
爲了避免啓動腳本時,它已經在運行,我用羊羣()。
這是腳本(job.py):
import fcntl
import time
import sys
def doIncrediblyImportantThings():
for i in range (100):
sys.stdout.write ('[%s] %d.\n' % (time.strftime ('%c'), i))
time.sleep (1)
if __name__ == '__main__':
f = open ('lock', 'w')
try: fcntl.lockf (f, fcntl.LOCK_EX | fcntl.LOCK_NB)
except:
sys.stderr.write ('[%s] Script already running.\n' % time.strftime ('%c'))
sys.exit (-1)
doIncrediblyImportantThings()
這種做法似乎工作。
有什麼我失蹤?我可以使用這種方法遇到麻煩嗎?
是否有更多的建議或「適當」的方式來實現這種行爲?
我感謝您的任何建議。
大問題。 – erjoalgo 2013-06-28 04:09:12