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

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.xdnf.cn/news/18213.html

相关文章:

  • Python数据类型转换详解:从基础到实践
  • uniappx 安卓端本地打包的一些总结
  • 【typenum】 16 非零标记及改进建议
  • 【Linux系统】动静态库的制作
  • java之 junit4单元测试Mockito的使用
  • Pycharm Debug详解
  • 深度学习之优化器
  • 数据与模型融合波士顿房价回归建模预测
  • 数据结构(排序篇)——七大排序算法奇幻之旅:从扑克牌到百亿数据的魔法整理术
  • LeetCode 1323: 6和9组成的最大数字
  • 内网后渗透攻击--隐藏通信隧道技术(应用层隧道技术)
  • 一键管理 StarRocks:简化集群的启动、停止与状态查看
  • JAVA后端开发——Token自动续期机制的必要性
  • 库制作与原理(下)
  • RabbitMQ面试精讲 Day 24:消费者限流与批量处理
  • Linux中iSCSI存储配置与管理指南
  • Leetcode 15 java
  • 【LeetCode 热题 100】118. 杨辉三角
  • 使用Github Page发布网站
  • Compose笔记(四十六)--Popup
  • 廖雪峰-java教程-Part01
  • RK3588开发板Ubuntu系统烧录
  • 如何利用gemini-cli快速了解一个项目以及学习新的组件?
  • GitHub Copilot:AI编程助手的架构演进与真实世界影响
  • 【102页PPT】新一代数字化转型信息化总体规划方案(附下载方式)
  • 第七十九:AI的“急诊科医生”:模型失效(Loss Explode)的排查技巧——从“炸弹”到“稳定”的训练之路!
  • 为什么神经网络在长时间训练过程中会存在稠密特征图退化的问题
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月17日第163弹
  • 内网穿透系列十一:NPS 是一款轻量级、高性能、功能强大的内网穿透工具,自带Web管理端,支持Docker快速部署
  • Win10快速安装.NET3.5