当前位置: 首页 > news >正文

Linux Shell定时检查日期执行Python脚本

Linux下的Shell语句每半小时检查一次当前的日期,如果当前的日期是开始运行时日期的第2天,则自动运行一段Python语句。

此方案使用标准的Bash日期计算,兼容主流Linux发行版(CentOS/Ubuntu等),通过睡眠循环实现定时检查,避免依赖外部定时任务。

#!/bin/bash# 获取脚本启动时的日期(格式:YYYY-MM-DD)
START_DATE=$(date +%F)# 计算第二天的日期
TARGET_DATE=$(date -d "$START_DATE +1 day" +%F)echo "脚本启动日期: $START_DATE"
echo "目标执行日期: $TARGET_DATE"while true; do# 获取当前日期CURRENT_DATE=$(date +%F)# 检查是否到达目标日期if [[ "$CURRENT_DATE" == "$TARGET_DATE" ]]; thenecho "当前日期 $CURRENT_DATE 是启动日期的第二天,开始执行Python脚本..."# 在此处替换为你要执行的Python命令# 示例: python3 /path/to/your_script.pypython3 -c "print('Hello from Python! Today is ' + '$CURRENT_DATE')"echo "Python脚本执行完成"break  # 执行后退出循环elif [[ "$CURRENT_DATE" > "$TARGET_DATE" ]]; thenecho "当前日期 $CURRENT_DATE 已超过目标日期 $TARGET_DATE,退出检查"breakelseecho "当前日期 $CURRENT_DATE 未到目标日期,继续等待..."fi# 等待30分钟(1800秒)sleep 1800
done

使用说明:

  1. 保存脚本(例如 date_checker.sh):

    nano date_checker.sh
    

    粘贴上述内容后保存退出

  2. 添加执行权限

    chmod +x date_checker.sh
    
  3. 修改Python命令
    在脚本中找到以下行,替换为实际需要执行的Python命令:

    python3 -c "print('Hello from Python! Today is ' + '$CURRENT_DATE')"
    

    示例替换:

    python3 /home/user/my_script.py
    
  4. 运行脚本

    ./date_checker.sh
    

工作流程:

  1. 启动时记录当前日期(如2025-08-17)
  2. 计算目标日期(2025-08-18)
  3. 每30分钟检查一次当前日期
  4. 当检测到当前日期为目标日期时:
    • 执行指定的Python命令
    • 退出循环结束脚本
  5. 如果当前日期已超过目标日期,直接退出

注意事项:

  1. 长期运行:若需持续后台运行,建议配合nohup
    nohup ./date_checker.sh > log.txt 2>&1 &
    
  2. 时区处理:脚本使用系统时区,确保系统时间设置正确
  3. 日期格式:使用ISO 8601格式(YYYY-MM-DD)避免歧义
  4. 日志查看:输出信息包含日期检查状态,便于调试

测试验证:

  1. 快速测试(修改等待时间为10秒):
    # 将 sleep 1800 改为:
    sleep 10
    
  2. 手动修改系统时间测试(需要root权限):
    sudo date -s "2025-08-18 00:00:00"
    
http://www.dtcms.com/a/336471.html

相关文章:

  • 【AIGC】DDPM scheduler解析:扩散模型里的“调度器”到底在调什么?
  • 线程的同步
  • 魔改chromium源码——解除 iframe 的同源策略
  • Go语言实战案例-使用ORM框架 GORM 入门
  • 0️⃣基础 认识Python操作文件夹(初学者)
  • E2B是一个开源基础设施,允许您在云中安全隔离的沙盒中运行AI生成的代码和e2b.dev网站
  • 基因编辑预测工具:inDelphi与Pythia
  • Linux学习记录
  • 图解简单选择排序C语言实现
  • 01数据结构-插入排序
  • 一文读懂[特殊字符] LlamaFactory 中 Loss 曲线图
  • 防火墙带宽管理
  • 使用 Python 的 `cProfile` 分析函数执行时间
  • AUTOSAR进阶图解==>AUTOSAR_SWS_EthernetStateManager
  • 【PHP】Hyperf:接入 Nacos
  • 今日Java高频难点面试题推荐(2025年8月17日)
  • Python数据类型转换详解:从基础到实践
  • 【Kubernetes系列】Kubernetes中的resources
  • Matlab数字信号处理——ECG心电信号处理心率计算
  • FreeRTOS 中的守护任务(Daemon Task)
  • 第七十七章:多模态推理与生成——开启AI“从无到有”的时代!
  • 【C++知识杂记2】free和delete区别
  • c++--文件头注释/doxygen
  • Linux应用软件编程---多任务(线程)(线程创建、消亡、回收、属性、与进程的区别、线程间通信、函数指针)
  • 工作八年记
  • 官方正版在线安装office 365安装工具
  • 数组的三种主要声明方式
  • 大模型对齐算法(二): TDPO(Token-level Direct Preference Optimization)
  • Android中使用Compose实现各种样式Dialog
  • tcp会无限次重传吗