温馨提示×

debian 定时器启动方式

小樊
46
2025-12-22 16:52:30
栏目: 智能运维

Debian 定时器启动方式

一 systemd 定时器启动方式

  • 创建服务单元:新建文件 /etc/systemd/system/yourtask.service
    [Unit]
    Description=Your Task
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/your-script.sh
    
  • 创建定时器单元:新建文件 /etc/systemd/system/yourtask.timer
    [Unit]
    Description=Timer for your task
    
    [Timer]
    OnCalendar=*-*-* 02:00:00
    Persistent=true
    
    [Install]
    WantedBy=timers.target
    
  • 启动与开机自启
    sudo systemctl daemon-reload
    sudo systemctl enable --now yourtask.timer
    
  • 常用管理
    sudo systemctl status yourtask.timer
    sudo systemctl list-timers --all
    sudo systemctl stop yourtask.timer
    sudo systemctl disable yourtask.timer
    

要点:定时器由 systemd-timers 驱动,调度规则写在 OnCalendar 中;Persistent=true 可在系统错过触发时补执行;修改单元后需执行 daemon-reload

二 Cron 的启动与管理

  • 安装与启动服务
    sudo apt-get install -y cron
    sudo systemctl start cron
    sudo systemctl enable cron
    
  • 任务配置
    • 用户级:crontab -e,格式为 分 时 日 月 周 命令
      0 6 * * * /path/to/backup.sh
      
    • 系统级:编辑 /etc/crontab 或在 /etc/cron.d/ 下新增文件(需显式指定执行用户)
  • 常用管理
    sudo systemctl status cron
    sudo systemctl restart cron
    tail -f /var/log/syslog | grep CRON
    

要点:Cron 是最常用的定时任务机制,支持分钟级调度;系统级任务使用 /etc/crontab/etc/cron.d/,用户级任务使用 crontab -e

三 如何选择与对比

维度 systemd 定时器 Cron
启动方式 创建 .timer 单元并执行 systemctl enable --now your.timer 安装并启动 cron 服务,使用 crontab -e 或编辑 /etc/crontab
配置位置 /etc/systemd/system/*.timer.service /var/spool/cron/crontabs/用户名/etc/crontab/etc/cron.d/
时间语法 OnCalendar=…(日历时间表达式) 分 时 日 月 周 五字段
错过执行 Persistent=true 可补执行 默认不补执行
日志与排查 systemctl statusjournalctl -u your.timer /var/log/syslog 中 grep CRON
适用场景 与 systemd 服务深度集成、需精确日历时间 简单周期任务、系统维护脚本
要点:两者可并存;若需与 systemd 服务生命周期、日志与依赖管理联动,优先使用 systemd 定时器;简单脚本与系统级例行任务可用 Cron

0