当前位置: 首页 > 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.lryc.cn/news/624051.html

相关文章:

  • 安装pytorch3d后报和本机cuda不符
  • 照相机标定-动手学计算机视觉16
  • 计算机网络 Cookie 和 Session 的区别详解
  • 【递归、搜索与回溯算法】记忆化搜索
  • C语言零基础第19讲:自定义类型—联合体和枚举
  • 1. Docker的介绍和安装
  • 区块链练手项目(持续更新)
  • 电容,三极管,场效应管
  • 【状压DP】3276. 选择矩阵中单元格的最大得分|2403
  • 电动车安全技术全解析:从传统制动到智能驾驶的技术革命
  • MySQL深度理解-MySQL8新特性
  • 三种变量类型在局部与全局作用域的区别
  • 深入理解C#特性:从应用到自定义
  • 一起Oracle 19c bug 导致的业务系统超时问题分析
  • 嵌入式C语言学习笔记之枚举、联合体
  • Jenkins - CICD 注入环境变量避免明文密码暴露
  • 图解直接插入排序C语言实现
  • 跨越南北的养老对话:为培养“银发中国”人才注入新动能
  • 数据准备|生成折线图
  • Python自学09-常用数据结构之元组
  • Java语法进阶之常用类
  • 【新手入门】Android基础知识(二):Binder进程间通信,理解Binder工作原理以及Binder实体、Binder引用、Binder代理概念
  • K8S集群环境搭建(一)
  • 双指针和codetop2(最短路问题BFS)
  • Maven依赖范围
  • 检查xrdp远程连接桌面卡顿的问题(附解决sh脚本)
  • STM32入门之USART串口部分
  • # C++ 中的 `string_view` 和 `span`:现代安全视图指南
  • 多墨智能-AI一键生成工作文档/流程图/思维导图
  • Transformer 面试题及详细答案120道(61-70)-- 解码与生成