首页/系统/信创系统运维速查/Windows 计划任务迁移 cron / systemd timer
迁移适配65 条

Windows 计划任务迁移 cron / systemd timer

调度迁移分两步:重建触发规则(cron 或 timer)、核对执行账户与日志;任务动作脚本一并按 shell 重写(见 bat 转 shell 条目)。

信创系统运维速查系统更新于 2026-10-13

计划任务迁移是做什么的

从 Windows 迁移到信创平台时,原有的计划任务需要重建为 cron 或 systemd timer。迁移分两步:一是把触发规则(时间、周期、重试)翻译过去,二是把任务动作的脚本从批处理改写为 shell(见 bat 转 shell 相关条目),并核对执行账户与权限范围。Linux 侧的定时任务不加载用户登录环境,脚本里必须显式设置 PATH 或写全路径,否则常见「手工能跑、定时失败」。

基本信息

cron 配置用户级 crontab -e,系统级 /etc/cron.d 与 /etc/crontab
时间格式分 时 日 月 周,后面跟要执行的命令
systemd timerOnCalendar 定义触发时间,Persistent 补跑错过的任务
日志cron 输出需重定向,timer 可走 journalctl
执行账户按最小权限选择服务账户,不要沿用旧的高权账户

典型使用场景

  • 每日备份任务从 Windows 计划任务迁移到 cron,保留原有触发时间
  • 需要补跑语义的任务(如设备关机错过的备份)改用 systemd timer
  • 日志轮转、清理、报表生成等周期性维护任务集中迁移
  • 核对任务执行账户与所需文件权限,避免迁移后权限不足失败
  • 排查「迁移后任务不执行」:检查 cron 服务状态、脚本权限与环境变量
  • 把多个零散任务统一到 timer 便于用 systemctl 与 journalctl 观察
  • 迁移后统一调整任务时间,避免所有任务集中触发造成资源争抢

cron 与 timer 示例

cron 与 timer 示例
# Windows:每天 02:30 备份 → cron 对应写法
# 30 2 * * * /opt/scripts/backup.sh >> /var/log/backup.log 2>&1
# 每周一 06:00 执行
# 0 6 * * 1 /opt/scripts/weekly.sh
crontab -l                      # 查看当前用户任务
systemctl status crond --no-pager | head   # 服务名在 deb 系为 cron
# 需要补跑与统一日志时改用 timer:
cat > /etc/systemd/system/backup.timer <<'EOF'
[Unit]
Description=daily backup
[Timer]
OnCalendar=*-*-* 02:30:00
Persistent=true
[Install]
WantedBy=timers.target
EOF
systemctl enable --now backup.timer
systemctl list-timers | head    # 查看下次触发时间

迁移对照要点

Windows 概念Linux 对应迁移注意
触发器时间cron 五段或 OnCalendar注意时区与夏令时设置
执行账户运行任务的用户或服务账户按最小权限重新评估
起始位置脚本内 cd 或绝对路径cron 默认目录与预期不同
环境变量脚本内显式设置cron 不读登录环境
重试与补跑timer 的 Persistent 或脚本内重试补跑语义需业务可接受
「手工执行正常、定时执行失败」几乎都是环境差异导致:cron 的 PATH 很短、不加载 profile、工作目录不确定。脚本里显式写全命令路径、设置 PATH 并固定工作目录可以一次性消除这类问题。
迁移后建议保留一段时间的双跑观察:新任务的输出日志、执行时长与旧系统对照,确认结果一致后再下线旧任务。

易错点

  • 沿用旧的 Windows 高权限账户,Linux 侧权限范围被放大,违反最小权限原则
  • 脚本依赖登录环境变量,定时执行时命令找不到,表现为任务静默失败
  • 任务输出未重定向,执行结果无人查看,失败长期无感知
  • 多个任务时间点集中,资源争抢导致部分任务超时,迁移后需统一编排触发时间

数据来源与参考

  • man 5 crontab
  • systemd.timer 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌