如何每天运行一次shell脚本?

时间:2015-03-23 16:06:03

标签: python linux bash shell

我试图每天只运行一次这个特殊的shell脚本。这是我runLucene.py的代码:

#!/usr/bin/env python

import os
from extras.download_datos_desambiguar import news_Lucene

x=datetime.today()
y=x.replace(day=x.day, hour=09, minute=00, second=0, microsecond=0)
delta_t=y-x

secs=delta_t.seconds+1

def fourdlife():
    print "checking function"
    os.system("~/code/4dlife_repo/4dbatch/src/engines/extras/download_datos_desambiguar/news_Lucene.py")



t = Timer(secs, fourdlife)
t.start()
print "timer started"

我在ProcesosContinuous.py文件中运行此代码,如下所示:

while True:
            os.system("./runl.sh")
            #some other processes

其中runl.sh

python ~/code/4dlife_repo/4dbatch/src/engines/extras/download_datos_desambiguar/news_Lucene.py

此python代码始终在我的apache2服务器上运行。

但是,这在任何给定的小时都有效,而不仅仅是指定的小时。我究竟做错了什么? 此外,我觉得有一个更好的方法来做到这一点。我查看了cron任务,但这不是我要找的。我不希望我的程序转到sleep(),因为我需要在runl.sh进程之后运行其他进程。这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:4)

命令crontab -e将打开一个交互式编辑器,您可以在其中定义一个cron作业。

在该编辑器的缓冲区中,您可以输入如下所示的行(然后保存):

00 00 * * * /path/to/script.sh

此命令将每隔午夜运行script.sh

答案 1 :(得分:0)

cron总是这样做,我认为使用它更好一点,而不是让python脚本专门用于不断检查是否需要运行shell脚本。

话虽如此,当你创建crontab时,它会在用户crontab下面,所以只需要观察用户和/或-u它。