cron脚本需要有条件才能运行

时间:2018-07-24 17:00:34

标签: linux bash shell cron

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

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

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

2 个答案:

答案 0 :(得分:0)

最好的方法是制作第三个文件,您可以在其中调用第一个脚本,并在运行返回或不运行第二个脚本后获取返回,就像这样。

#!/usr/bin/env bash
variable=$(download "something")
if [-f "../path/your/file.pdf" ]; then
   run here your second command // if file exists run it
fi

答案 1 :(得分:0)

您对cron作业拥有的内容是正确的,进程1将运行,并且如果process_two成功,则将运行。唯一缺少的是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