`

linux 定时任务 crontab

 
阅读更多

具体crontab内容参见

http://blog.csdn.net/zwhfyy/article/details/34065187

 ubuntu 重启crontab

sudo service cron restart 

 

不是ubuntu版本的重启命令

$ service crond restart

 

我有个需求是根据时间自动发布文章, 但django环境又是用了virtualenv

 

#!/usr/bin/env python
# encoding: utf-8

#--------------------setup django env start-----------------------------
import socket
import sys
import os
import django

PRODUCTION_HOST = [
    'ip-172-31-20-231',
    'ip-172-31-21-123',
]

DEV_HOST =[
    'w31',
]

PATH = '/home/david/xxx/xxx/xxx'
#PATH = '/ring/xxx/xxx/xxx'

sys.path.insert(0, PATH)
if socket.gethostname() in PRODUCTION_HOST:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings.production") 
elif socket.gethostname() in DEV_HOST:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings.dev") 
else:
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xxx.settings.local") 
django.setup()

#--------------------setup django env end-----------------------------

import datetime
from article.models import Article

now = datetime.datetime.now()
qs = Article.objects.filter(is_home_featured=True).order_by('-date_modified')[:200]

for atricle in qs:
    print atricle.datetime_publish, atricle.datetime_unpublish
    if atricle.datetime_publish <= now <= atricle.datetime_unpublish:
        atricle.is_approved = True
    else:
        atricle.is_approved = False
    atricle.save()

  

用一个sh来进入virtualenv

#!/bin/bash 

# local
cd /home/david/.virtualenvs/xxx
source ./bin/activate
python /home/david/xxx/xxx/xxx/scripts/schedule_publish_article.py
deactivate

# dev




# production

 

可能还要把这两个文件权限改成可执行

chmod a+x xxxx.py

 

crontab -e

然后添一句

*/50 * * * * bash /home/david/xxx/xxx/xxx/scripts/schedule_publish_article.sh

 

链接一个参考

http://www.centoscn.com/CentOS/help/2014/1030/4025.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics