本文目录导读:

- Linux / macOS 系统:使用
cron - Windows 系统:使用“任务计划程序”
- Python 脚本自身:使用
schedule库 - 最简单的方法:使用
at命令(一次性的定时任务) - 总结:你应该用哪个?
是的,实用脚本完全可以定时执行!这是很多自动化场景的核心需求,不同的操作系统有不同的内置工具来实现定时任务。
这里按操作系统分类,给你几个最常用、最实用的定时执行脚本的方法:
Linux / macOS 系统:使用 cron
cron 是Linux和macOS下最经典、最强大的定时任务工具,几乎所有的服务器和开发机都支持。
基本用法:
- 打开终端,输入
crontab -e来编辑当前用户的定时任务列表(第一次会让你选择编辑器)。 - 按照
cron语法添加一行任务,格式是:* * * * * /path/to/your/script.sh前面的五个星号代表“分、时、日、月、周”。
常用示例:
-
每天早上8点执行备份脚本:
0 8 * * * /home/user/scripts/backup.sh -
每小时执行一次监控脚本:
0 * * * * /path/to/monitor.py -
每5分钟执行一次状态检查脚本:
*/5 * * * * /usr/bin/python3 /home/user/scripts/check_status.py -
每周一凌晨3点重启服务:
0 3 * * 1 /sbin/reboot
优点: 稳定、资源占用极低、系统自带无需安装。 适用: 服务器、长期运行的Linux/macOS机器。
Windows 系统:使用“任务计划程序”
Windows自带了一个强大的图形化定时工具——任务计划程序 (Task Scheduler)。
基本用法:
- 在Windows搜索栏输入“任务计划程序”并打开。
- 点击右侧“创建基本任务...”。
- 输入名称和描述,点击“下一步”。
- 选择触发器(每天、每周、一次、计算机启动时等),点击“下一步”。
- 设置具体时间,点击“下一步”。
- 选择“启动程序”,点击“下一步”。
- 程序或脚本 输入
python.exe或powershell.exe的路径。 - 添加参数 输入你的脚本文件路径(如
D:\scripts\cleanup.py)。 - 起始于 输入脚本所在的目录。
- 点击“完成”。
更高级的操作: 创建任务后,可以在属性中设置更多条件(如:仅当计算机空闲时运行、网络连接时运行等)。
优点: 图形化界面直观、功能强大(支持多种触发条件)。 适用: Windows桌面用户、Windows服务器。
Python 脚本自身:使用 schedule 库
如果你不想依赖操作系统的定时任务,可以在Python脚本内部实现循环定时。
安装:
pip install schedule
示例脚本:
import schedule
import time
def job():
print("任务执行中...")
# 每10分钟执行一次
schedule.every(10).minutes.do(job)
# 每天下午5:30执行
schedule.every().day.at("17:30").do(job)
# 每周一执行
schedule.every().monday.do(job)
while True:
schedule.run_pending()
time.sleep(1) # 每秒检查一次
优点: 纯Python实现,跨平台(Windows/Linux/macOS),代码逻辑灵活(可动态修改时间、传递参数)。 缺点: 脚本必须保持运行状态(不能关闭终端或系统重启后自动恢复,除非配合其他工具)。
最简单的方法:使用 at 命令(一次性的定时任务)
如果你只需要让脚本在未来某一个时间点执行一次(比如10分钟后重启),at 命令最合适。
Linux/macOS:
echo "sh /path/to/script.sh" | at now + 10 minutes
或
at 14:00 > /path/to/script.sh > Ctrl+D
Windows:
schtasks /create /tn "MyScript" /tr "python D:\scripts\script.py" /sc once /st 14:00
你应该用哪个?
| 场景 | 推荐方案 | 理由 |
|---|---|---|
| Linux/macOS服务器 | cron |
最标准、最稳定、资源占用极小 |
| Windows桌面/服务器 | 任务计划程序 | 图形化操作简单,功能完整 |
| 需要跨平台、与Python深度集成 | schedule 库 + 持续运行脚本 |
代码内管理,逻辑灵活 |
| 只需执行一次 | at 命令 |
最快、最直接 |
特别提醒:
- 定时执行脚本时,务必确保脚本中的路径都是绝对路径(如
/home/me/scripts/run.sh而不是./run.sh),因为定时任务的环境变量可能与终端不同。 - 建议先将脚本输出重定向到日志文件,方便调试(
cron任务中写成0 8 * * * /path/script.sh >> /var/log/mylog.log 2>&1)。
如果你能告诉我你具体用的是什么操作系统、想执行什么类型的脚本(Python、Shell、批处理等),我可以帮你写一个现成的定时任务配置。