linux - 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
解决方案
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
推荐阅读
- load-balancing - HAProxy URL 负载平衡
- c++ - 如何从数字中获取 Unicode 字符?
- java - 在 AWS Lambda Java 中解析 Kinesis 数据流
- r - 在(反)对角线上应用函数
- javascript - 引导程序中的 net::ERR_ABORTED 500(内部服务器错误)
- batch-file - Windows 批处理文件 xcopy 同一文件夹中的特定文件
- angular - 为什么 ng serve 在进程监视器中显示多次
- javascript - 如何使用“toHaveBeenCalledWith”在 Jasmine 中断言布尔值
- compiler-errors - 在 Ubuntu 中构建 Code Composer Studio 嵌入式项目(带有指向外部项目的链接)时找不到头文件错误
- javascript - 如何使用 arguments.length 来查找传递给函数的参数数量?