如何從crontab中調用需要使用activate(source env/bin/active)的python腳本?從crontab調用python腳本並激活
6
A
回答
15
virtualenv的激活腳本非常簡單。它主要爲你的virtualenv的Python解釋器設置路徑;如果你不在交互式shell中,它所做的其他工作(設置PS1
,保存舊變量等)並不是真的必要。所以,最簡單的方法就是用正確的Python解釋器,它可以在以下兩種方式之一進行啓動您的Python腳本:
1.設置Python腳本使用您的virtualenv的Python解釋器
假設你的virtualenv的解釋是~/virtualenv/bin/python
,你可以把這個路徑在你的Python腳本的頂部:
#!/home/user/virtualenv/bin/python
然後從你的crontab啓動腳本,爲正常。
2.啓動在你的cronjob正確的Python解釋器的腳本
假設你的腳本是~/bin/cronjob
和你的virtualenv的Python解釋爲~/virtualenv/python
,你可以把這個在你的crontab:
* * * * * /home/user/virtualenv/python /home/user/bin/crontab
1
我的方法是始終保持crontab儘可能簡單,並且處理由crontab調用的腳本中的所有配置。
1)創建一個外殼腳本:例如/var/webapp/cron.sh
#!/bin/sh
PATH="/var/webapp/.env/bin:$PATH"
export PATH
cd /var/webapp/
python test.py
其中/var/webapp/.env/bin是的virtualenv位置。設置PATH,你不需要運行源../activate
2)正確設置你的環境。例如,對於一個Django應用:
#!/usr/bin/env python
import os
from datetime import datetime
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings.production'
os.environ['DJANGO_CONF'] = 'settings.production'
from util.models import Schedule
dset = Schedule.objects.all()
for rec in dset:
print rec
print 'cron executed %s' % datetime.today()
在這個例子中,django的設置位於設置/ production.py
3)最後,編輯/ etc/crontab中。例如,要執行每半小時,每一天:
1,31 * * * * root /var/webapp/cron.sh >> /var/webapp/cron.log
注意,重要的是要生成日誌,以幫助您發現錯誤或調試消息。
相關問題
- 1. 從crontab運行python腳本
- 2. 從crontab運行python腳本
- 3. 用python腳本激活root用戶。 (OSX)
- 4. 從腳本中激活URL
- 5. 激活腳本
- 6. 默認禁用GPIO,並通過python腳本臨時激活它
- 7. Python腳本來激活並保持開放VIRTUALENV
- 8. 從bash腳本中取消激活pythonbrew
- 9. 重新激活python腳本 - Linux bash腳本
- 10. 如何激活.vim腳本
- 11. 激活anaconda並從cmd腳本啓動web服務器
- 12. 從shell腳本調用python腳本cron
- 13. 從Bash腳本調用python腳本
- 14. 從Python腳本調用scons
- 15. 從python腳本調用mongoimport
- 16. 從python腳本調用gdb
- 17. 從awk調用python腳本
- 18. 從C調用python腳本#
- 19. 從Python調用Perl腳本
- 20. 從PHP調用Python腳本
- 21. Airflow不會啓動我的dags(激活python環境並啓動python腳本)
- 22. 從python中調用python腳本
- 23. 引導時的Raspberry crontab python腳本
- 24. Crontab Python腳本沒有運行
- 25. Crontab不運行我的python腳本usi.py
- 26. Python腳本沒有在crontab中執行
- 27. crontab無法運行python腳本
- 28. 在Crontab中連續運行python腳本
- 29. 的crontab不會運行Python腳本
- 30. 使用腳本編輯crontab
easy_install庫的路徑怎麼樣? – Timmy 2010-05-27 19:58:08
如果它們也安裝在虛擬環境中或「全局」站點包目錄中,則應該找到它們;否則,你將不得不把它們放在你的'$ PYTHONPATH'中,它有點醜,但是可以通過'/ usr/bin/env'或者其他來啓動Python bin來完成。 – mipadi 2010-05-27 20:09:44
最後的代碼塊應該可能以「/ home/bin/cronjob」結尾 – 2010-08-06 22:06:59