温馨提示×

debian定时器怎样写脚本

小樊
35
2026-10-13 16:32:03
栏目: 智能运维

在 Debian(以及大多数 Linux 发行版)里,通常所说的“定时器”一般有两种常见方式:

  1. cron(传统、简单,适合周期性任务)
  2. systemd timer(更现代,适合需要精确控制、日志管理的任务)

下面分别说明,并给出脚本怎么写、怎么配置。


一、使用 cron(最简单)

1. 写脚本

例如写一个备份脚本:

#!/bin/bash
# /root/backup.sh

DATE=$(date +%F)
tar -czf /backup/data_$DATE.tar.gz /data

赋予执行权限:

chmod +x /root/backup.sh

2. 编辑定时任务

crontab -e

添加一行(每天凌晨 2 点执行):

0 2 * * * /root/backup.sh

3. 常见时间格式

分 时 日 月 周
* * * * *  每分钟
0 * * * *  每小时
0 2 * * *  每天 2:00
0 2 * * 1  每周一 2:00

✅ 适合:简单定时任务


二、使用 systemd timer(推荐用于服务类任务)

1. 写执行脚本

#!/bin/bash
# /usr/local/bin/mytask.sh

echo "$(date) task run" >> /var/log/mytask.log
chmod +x /usr/local/bin/mytask.sh

2. 创建 service 文件

sudo nano /etc/systemd/system/mytask.service

内容:

[Unit]
Description=My Task

[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh

3. 创建 timer 文件

sudo nano /etc/systemd/system/mytask.timer

每天 2 点执行:

[Unit]
Description=Run My Task Daily

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target

4. 启用并启动

sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer

查看状态:

systemctl list-timers

✅ 适合:需要日志、依赖、失败重试的任务


三、脚本编写注意事项(很重要)

  1. 脚本第一行必须是
#!/bin/bash
  1. cron 环境变量很少
    • 建议在脚本里写绝对路径
    • 或手动 source:
source /etc/profile
  1. 输出建议重定向
* * * * * /root/backup.sh >> /var/log/backup.log 2>&1

四、如何选择?

场景 推荐
简单命令 cron
服务/脚本 systemd timer
需要日志 systemd
容器环境 看基础系统

如果你能告诉我:

  • 是 每隔多久执行
  • 是 服务器脚本还是用户脚本
  • 是否需要 开机自启 / 失败重试

我可以直接帮你写一份完整可用的配置。

0 踩