温馨提示×

如何调度debian定时进程

小樊
43
2026-10-01 16:21:22
栏目: 智能运维

在 Debian 系统中,调度定时进程主要有以下几种常用方式,最常见的是 cron 和 systemd timer。下面按使用频率和场景给你系统讲解。


一、使用 cron(最常用)

1. 用户级定时任务

每个用户都可以有自己的 cron 任务。

crontab -e

格式:

分 时 日 月 周 命令

示例:

# 每天凌晨 2 点执行备份脚本
0 2 * * * /home/user/backup.sh

# 每 5 分钟执行一次
*/5 * * * * /usr/local/bin/check.sh

查看当前任务:

crontab -l

删除当前用户任务:

crontab -r

2. 系统级定时任务

系统任务通常在:

/etc/crontab
/etc/cron.d/

示例(/etc/crontab):

30 3 * * * root /usr/local/bin/cleanup.sh

注意:系统 crontab 需要指定 用户。


3. 周期性目录(简单任务)

Debian 提供以下目录,按周期自动执行:

/etc/cron.hourly/
/etc/cron.daily/
/etc/cron.weekly/
/etc/cron.monthly/

只需把脚本放进对应目录并赋予执行权限:

chmod +x /etc/cron.daily/myscript

二、使用 systemd timer(现代方式,推荐服务器使用)

1. 创建 service

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

内容:

[Unit]
Description=Backup Service

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

2. 创建 timer

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

内容:

[Unit]
Description=Daily Backup Timer

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

[Install]
WantedBy=timers.target

3. 启用并启动

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

查看状态:

systemctl list-timers

三、at(一次性任务)

适合“只运行一次”的定时任务。

sudo apt install at
echo "/home/user/job.sh" | at 23:30

查看任务:

atq

删除任务:

atrm 任务编号

四、常见问题排查

cron 不执行?

  • 检查服务是否运行:
systemctl status cron
  • 查看日志:
grep cron /var/log/syslog
  • 脚本中使用绝对路径
  • 在 crontab 中设置环境变量(如 PATH)

五、如何选择?

场景 推荐
简单定时脚本 cron
系统服务级任务 systemd timer
一次性任务 at
高可靠 + 日志 systemd timer

如果你有具体场景(比如“每天备份 MySQL”“每隔 10 秒执行一次”),我可以直接帮你写配置。

0 踩