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

wvyml7n5  于 12个月前  发布在  Linux
关注(0)|答案(3)|浏览(138)

我尝试每天只运行一次这个特定的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进程。什么是最好的方法这个吗

s4n0splo

s4n0splo1#

命令crontab -e将打开一个交互式编辑器,您可以在其中定义cron作业。
在该编辑器的缓冲区中,您可以输入如下所示的行(然后保存它):

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

字符串
此命令将在每个午夜运行script.sh

nbnkbykc

nbnkbykc2#

cron总是在做它自己的事情,我认为使用它比使用一个python脚本来不断检查是否是时候运行shell脚本要好得多。
也就是说,当您创建crontab时,它将位于users crontab下,因此只需查看用户和/或-u即可。

xienkqul

xienkqul3#

虽然4 Each的答案适用于在crontab文件中提供的时间运行的计算机,但有一个更好的解决方案可以每天执行|每周|每月任务由jeff提供。
我将重述最重要的信息。

当您的计算机关闭(或cron守护程序未运行)时,cron作业将不会启动。

如果您有作业要在计算机关闭后运行,请使用以下目录:

/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly

字符串
这依赖于系统启动脚本和cron本身来运行。

**对于简单的“每日”、“每周”、“每月”作业,请将脚本的副本或符号链接放在/etc/cron中的一个。{daily|每周|**这将负责每天/每周/每月运行它,如果您的计算机在“每周”脚本正常运行的那一天关闭,它将在下次计算机打开时运行它们。

相关问题