首页 > 解决方案 > cron 脚本需要有条件才能运行

问题描述

我有两个 python 脚本,我试图在我的服务器上运行我目前有 process_one 每五分钟运行一次 cron 作业我想将第二个脚本添加到 cron 作业中。

自由职业者告诉我,这两个程序都可以通过编写 shell 脚本自动运行。如果 process_one 在其 output_folder(即 process_two 的 input_folder)中生成数据,那么它将向操作系统返回系统状态“0”(OK),否则它返回 ERROR 信号——即使在“没有错误,但没有新生成”的情况下也是如此. 我不知所措我以前从未编写过 shell 脚本。我在这里和其他地方看,但我不知道如何写这个。任何帮助,将不胜感激

/path/to process1/process_one && /path/to process2/process_two

标签: linuxbashshellcron

解决方案


cron 作业的内容是正确的,进程一将运行,如果成功,进程二将运行。唯一缺少的是 process_two 在运行之前检查 process_one 输出目录中的新数据。

我建议你在 process_two python 脚本的顶部使用几行来检查最近的数据,如果没有找到就退出。您可以修改 python 脚本本身来执行此操作,或者编写一个 bash 包装器作为 process_two,它在检查最近的数据后简单地调用 python 脚本。

py

import os.path, time
fileCreation = os.path.getctime(filePath)
now = time.time()
fivemin_ago = now - 300
if fileCreation < fivemin_ago:
    sys.exit "data was older than five minutes"

重击

NOW=$(date +%s)
MODIFIED=$(date -d "$(stat FILEPATH | grep Modify | awk '{print $2" "$3}')" +%s)
if [ $NOW -gt $[$MODIFIED+300] ];then
    echo "data was older than five minutes"
    exit 1
else
    process_two.py
fi

推荐阅读