我试图每天只运行一次这个特殊的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
进程之后运行其他进程。这样做的最佳方式是什么?
答案 0 :(得分:4)
命令crontab -e
将打开一个交互式编辑器,您可以在其中定义一个cron作业。
在该编辑器的缓冲区中,您可以输入如下所示的行(然后保存):
00 00 * * * /path/to/script.sh
此命令将每隔午夜运行script.sh
。
答案 1 :(得分:0)
cron总是这样做,我认为使用它更好一点,而不是让python脚本专门用于不断检查是否需要运行shell脚本。
话虽如此,当你创建crontab时,它会在用户crontab下面,所以只需要观察用户和/或-u它。