windows2019系统 如何在crontab中配置具体的定时任务?
美国、香港服务器
windows2019系统 如何在crontab中配置具体的定时任务?
06-14 来源:
一、前置检查(必做)1. 确认 WSL 的 cron 服务正常进入 WSL Ubuntu 终端,执行:bash运行# 启动服务 + 开机自启
sudo systemctl enable --now cron
# 查看运行状态
sudo systemctl status cron
看到 active (running) 即为正常。2. Windows 路径映射规则(重点)WSL 访问 Windows 磁盘固定格式:
C:\文件夹 → /mnt/c/文件夹
D:\文件夹 → /mnt/d/文件夹。
路径含空格 / 中文,必须用英文双引号包裹
示例:
Windows C:\MetaTrader 5 → WSL 路径 "/mnt/c/MetaTrader 5"二、crontab 标准语法plaintext分 时 日 月 周 要执行的命令
字段范围:
分:0-59
时:0-23(24 小时制)
日:1-31
月:1-12
周:0-7(0、7 = 周日,1 = 周一~6 = 周六)
通配符说明
*:每单位都执行
*/n:每隔 n 个单位执行
a-b:从 a 到 b 连续区间
a,b,c:指定多个离散时间点
三、完整操作步骤1. 编辑定时任务bash运行crontab -e
首次运行会让你选择编辑器,输入编号选 nano(最简单)。2. 编写定时规则(直接复制修改)通用模板plaintext时间表达式 完整命令 >> 日志路径 2>&1
要点:
系统命令写绝对路径(如 /bin/tar)
date 里的 % 必须转义为 \%
带空格的目录必须加 "
末尾 >> 日志 2>&1 记录运行日志,方便排错
3. 常用实战示例(MT5 备份场景)示例 1:每天 02:00 执行备份(推荐)plaintext0 2 * * * /bin/tar -zcf "/mnt/d/MT5_Backup/mt5_$(date +\%Y\%m\%d).tar.gz" "/mnt/c/MetaTrader 5" && find "/mnt/d/MT5_Backup" -name "mt5_*.tar.gz" -mtime +7 -delete >> /mnt/d/MT5_Backup/backup.log 2>&1
解释:
0 2 * * *:每天凌晨 2 点
打包 MT5 目录,按年月日命名
自动删除 7 天前旧备份
日志输出到 Windows D:\MT5_Backup\backup.log
示例 2:每 6 小时执行一次plaintext0 */6 * * * /bin/tar -zcf "/mnt/d/MT5_Backup/mt5_$(date +\%Y\%m\%d\%H).tar.gz" "/mnt/c/MetaTrader 5" >> /mnt/d/MT5_Backup/backup.log 2>&1
示例 3:每周日 03:00 执行plaintext0 3 * * 0 /bin/tar -zcf "/mnt/d/MT5_Backup/mt5_week_$(date +\%Y\%m\%d).tar.gz" "/mnt/c/MetaTrader 5" >> /mnt/d/MT5_Backup/backup.log 2>&1
示例 4:每天 23:30 执行plaintext30 23 * * * /bin/tar -zcf "/mnt/d/MT5_Backup/mt5_$(date +\%Y\%m\%d).tar.gz" "/mnt/c/MetaTrader 5" >> /mnt/d/MT5_Backup/backup.log 2>&1
4. 保存退出(nano 编辑器)
Ctrl + O → 回车保存
Ctrl + X 退出
5. 查看已配置任务bash运行crontab -l
四、常用管理命令bash运行# 查看当前定时任务
crontab -l
# 重新编辑
crontab -e
# 清空所有定时任务(谨慎使用)
crontab -r
# 临时禁用:crontab -e 在行首加 # 注释
# 重启 cron 服务
sudo systemctl restart cron
五、关键避坑(Windows+WSL 专属问题)1. 命令必须写绝对路径crontab 环境变量不全,不要简写 tar,要用 /bin/tar。2. 路径含空格一定要加英文双引号错误:
/mnt/c/MetaTrader 5
正确:
"/mnt/c/MetaTrader 5"3. date 中的 % 必须转义crontab 会把 % 当作换行符,所以:
正确:$(date +\%Y\%m\%d)
错误:$(date +%Y%m%d)
4. WSL 重启后 cron 不自动启动Windows 重启 → WSL 重启后,cron 可能关闭,设置开机自启:bash运行sudo systemctl enable cron
5. 权限问题(无法读写 Windows 目录)
关闭 Windows 文件夹只读属性
WSL 当前用户对 Windows 磁盘默认有权限,一般无需额外配置
六、测试方法(确保任务可用)
先单独执行整条命令,验证功能正常:
bash运行/bin/tar -zcf "/mnt/d/MT5_Backup/test.tar.gz" "/mnt/c/MetaTrader 5"
去 Windows 对应目录看是否生成压缩包。
再写入 crontab 定时,到时间后查看:
备份文件是否生成
日志文件 backup.log 有无报错
七、补充:纯测试定时(调试用)每分钟执行一次,用来快速验证 crontab 是否工作:plaintext* * * * * echo "测试运行 $(date)" >> /mnt/d/MT5_Backup/test.log 2>&1
观察 Windows 下 test.log 是否每秒新增记录。
三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快