crontab调度Python脚本

Crontab调度Python脚本
本文介绍在Red Hat Enterprise Linux Server环境下使用crontab调度Python脚本的注意事项,包括如何设置执行程序路径及环境变量,解决因Python多版本导致的执行问题。
环境:Red Hat Enterprise Linux Server release 5.4 (Tikanga),  python 2.7
 
 
由于本人对shell脚本语法相当不喜欢,一般与操作系统打交道用python脚本。在用crontab调度python脚有两个地方要注意:
 
1.  在python脚本中增加#!/usr/bin/env python来声明执行程序在系统环境变量中的名字
 
2.  在crontab中增加. $HOME/.bash_profile来调用bash_profile来声明环境变量,例: 19 16 * * * . $HOME/.bash_profile;/home/oradev/wget_test.py
 
 
注:  文件wget_test.py为可执行状态 -- chmod +x wget_test.py
        该文件的目录必须在环境变量PATH 内。
 
还遇到一问题就是脚本不执行也不报错,最终发现python有两个版本,一个版本在/usr/bin/python是2.4.3,将其删除并指定软链接 ln -s /usr/local/bin/python2.7 /usr/bin/python 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16582684/viewspace-756872/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/16582684/viewspace-756872/

在 Windows 和 Linux 系统中,可以通过多种方法实现定时执行 Python 脚本的任务调度需求。以下是不同平台下的常用工具和实现方式: ### Linux 系统中使用 `crontab` Linux 系统自带的 `crontab` 是一种高效且灵活的定时任务管理工具。用户可以使用 `crontab -e` 命令编辑定时任务,并通过特定的时间格式定义任务的执行周期。例如,以下命令可以每 5 分钟运行一次 Python 脚本: ```bash */5 * * * * python /path/to/your_script.py ``` 这种语法允许用户精确控制脚本的执行频率,包括分钟、小时、日期、月份和星期几的组合[^4]。 ### Windows 系统中使用任务计划程序 在 Windows 系统中,推荐使用内置的“任务计划程序”来创建定时任务。打开任务计划程序后,用户可以创建基本任务或触发器,定义任务的触发条件和执行操作。例如,可以设置一个触发器每天在特定时间运行 Python 脚本,或者每隔一段时间重复执行任务[^2]。 ### 使用 Python 的 `schedule` 模块 对于需要跨平台支持的项目,或者希望直接在 Python 脚本中集成任务调度功能的场景,可以使用 `schedule` 模块。该模块提供了一个简单友好的 Python 语法规则来定期运行函数或其他可调用对象。以下是一个简单的示例,展示如何每 10 秒执行一次任务: ```python import schedule import time def job(): print("I'm working...") # 每10秒执行一次job函数 schedule.every(10).seconds.do(job) while True: schedule.run_pending() time.sleep(1) ``` `schedule` 模块类似于 Windows 的任务计划和 Linux 的 `crontab`,但其优势在于可以直接在 Python 脚本中实现任务调度逻辑,而无需依赖外部工具[^1]。 ### 使用 Python 脚本调用系统命令 在某些情况下,也可以通过 Python 脚本调用系统命令来设置定时任务。例如,在 Linux 系统中,可以使用 `subprocess` 模块调用 `crontab` 命令;而在 Windows 系统中,则可以调用 `schtasks` 命令来创建定时任务。这种方法适用于需要动态生成或修改定时任务的应用场景。 ```python import subprocess # 在Linux中添加一个每小时执行一次的crontab任务 subprocess.run(['crontab', '-l'], capture_output=True, text=True) cron_jobs = result.stdout + '\n0 * * * * python /path/to/your_script.py\n' with open('/tmp/cron_jobs', 'w') as f: f.write(cron_jobs) subprocess.run(['crontab', '/tmp/cron_jobs']) # 在Windows中创建一个每小时执行一次的任务 subprocess.run(['schtasks', '/create', '/tn', 'MyPythonTask', '/tr', 'python C:\\path\\to\\your_script.py', '/sc', 'hourly', '/mo', '1', '/st', '00:00']) ``` 通过这种方式,可以实现对定时任务的自动化管理和维护,特别是在需要批量处理多个任务的情况下[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值