Linux计划任务cron与at一次性任务

2026-04-13 17:14:51 304

一、功能简介

Linux 任务计划用于在指定时间自动执行命令或脚本

  • cron:适合重复性/周期性任务(如每天备份、每小时清理日志)

  • at:适合一次性任务(如明天下午 3 点重启服务)


二、涉及的核心服务

服务名

说明

常见发行版差异

crond / cron

cron 守护进程,常驻后台扫描并触发任务

RHEL/CentOS/Fedora 叫 crond;Debian/Ubuntu 叫 cron

atd

at 守护进程,负责调度一次性任务

多数发行版同名

查看状态:systemctl status cronsystemctl status crond
启动/启用:sudo systemctl enable --now cron


三、主要配置文件

路径

作用

/etc/crontab

系统级 cron 配置,需指定执行用户

/var/spool/cron/(或 /var/spool/cron/crontabs/

各用户独立的 cron 配置(文件名=用户名)

/etc/cron.d/

第三方软件或管理员放置 cron 片段的目录

/etc/cron.{hourly,daily,weekly,monthly}/

系统定时脚本目录(通常由 anacronrun-parts 调用)

/etc/at.allow & /etc/at.deny

控制哪些用户可使用 at 命令

/var/spool/at/

存放 at 任务队列文件


四、如何使用与执行

1. cron 周期性任务

bash123456

时间格式分 时 日 月 周 命令
示例:0 2 * * * /usr/local/bin/backup.sh → 每天凌晨 2:00 执行

 /etc/crontab 格式多一列用户:分 时 日 月 周 用户 命令

2. at 一次性任务

bash123456789

五、注意事项

  1. 环境变量缺失:cron 默认不加载用户环境变量,脚本中务必使用绝对路径,或在脚本开头手动 export PATH=...

  2. 输出重定向:建议将标准输出和错误重定向到日志,避免触发邮件告警
    * * * * * /script.sh >> /var/log/myscript.log 2>&1

  3. 无需重启服务:使用 crontab -e 保存后,守护进程会自动重载配置。

  4. 权限控制:若存在 /etc/cron.allow,则仅其中列出的用户可用;若不存在则检查 cron.deny

  5. 日志查看journalctl -u cron 或查看 /var/log/cron


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题:
XML 地图