Linux定时任务进阶教程_Crontab与at任务调度实例
发布时间 - 2026-01-08 00:00:00 点击率:次Linux定时任务靠crontab(周期)和at(一次性),需掌握时间格式逻辑、环境差异及陷阱:crontab五字段为分时日月周,日与周须同时满足;脚本执行需用绝对路径或设PATH;at需atd服务运行且注意shell兼容性;务必记录日志并检查系统日志。
Linux 中的定时任务调度主要靠 crontab(周期性执行)和 at(一次性执行)实现。掌握它们的关键不是死记语法,而是理解时间格式逻辑、环境差异和常见陷阱。
crontab 时间字段怎么填才不踩坑
crontab 的 5 个时间字段顺序是:分 时 日 月 周,容易把“日”和“周”混淆。注意:日(1–31)和周(0–7,0 和 7 都代表周日)**同时满足才会触发**,不是“或”的关系。
- 想每月 1 号凌晨 2 点运行:
0 2 1 * * - 想每周一早上 9 点运行:
0 9 * * 1(不是 0,因为 0 是周日) - 想每 15 分钟执行一次:
*/15 * * * *(不是 */15/15) - 想在工作日(周一到周五)的每小时整点运行:
0 * * * 1-5
别忘了用 crontab -e 编辑后保存,系统不会自动提示是否生效——改完建议立刻用 crontab -l 确认内容已更新。
脚本在 crontab 里不执行?多半是环境问题
crontab 默认使用极简 shell 环境(PATH 很短,通常不含 /usr/local/bin 或 ~/bin),且不读取用户 .bashrc/.profile。所以即使命令在终端能跑,放进 crontab 就报 “command not found”。
- 写绝对路径:比如用
/usr/bin/python3而不是python3 - 显式设置环境变量:在 crontab 文件顶部加一行
PATH=/usr/local/bin:/usr/bin:/bin - 或者统一用 bash 包装:
0 3 * * * /bin/bash -c 'cd /home/user/script && ./backup.sh >> /tmp/backup.log 2>&1'
务必重定向输出(>> 和 2>&),否则错误信息会静默丢失,排查无从下手。
1
at 命令适合什么场景?怎么确保它真能跑
at 适用于明确时间点的一次性任务,比如“今晚 23:45 关机”、“明天上午 10 点发邮件提醒”。它不依赖用户登录状态,但需要 atd 服务开启。
- 检查 atd 是否运行:
systemctl is-active atd,如为 inactive,运行sudo systemctl enable --now atd - 提交任务:
echo "shutdown -h now" | at 23:45;也可用at now + 10 minutes - 查看待执行任务:
atq;取消任务:atrm
注意:at 默认使用 /bin/sh,如果你的命令依赖 bash 特性(如数组、[[ ]]),得显式指定:echo '#!/bin/bash\necho $(date)' | at now,并确保第一行是 shebang。
调试与日志:别让定时任务变成黑盒
crontab 和 at 都不会主动告诉你失败原因。开启基础监控很关键:
- 所有定时任务末尾加日志记录,例如:
2>&1 | tee -a /var/log/myjob.log - 检查系统级 cron 日志:
sudo grep CRON /var/log/syslog(Ubuntu/Debian)或/var/log/cron(CentOS/RHEL) - 临时测试可用
run-parts --test /etc/cron.hourly检查脚本命名和权限(必须可执行、无扩展名、不以 . 开头) - 用
date -d "next Friday"快速算出相对时间表达式对应的具体时刻,避免手动推算出错
不复杂但容易忽略。
# linux
# python
# centos
# ubuntu
# 环境变量
# bash
# echo
# date
# var
# debian
# 周日
# 才会
# 告诉你
# 适用于
# 无从下手
# 扩展名
# 不含
# 一到
# 别忘了
# 别让
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
东莞市网站制作公司有哪些,东莞找工作用什么网站好?
Python文件异常处理策略_健壮性说明【指导】
JavaScript Ajax实现异步通信
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
怎么用AI帮你为初创公司进行市场定位分析?
Linux系统运维自动化项目教程_Ansible批量管理实战
如何快速建站并高效导出源代码?
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
Android使用GridView实现日历的简单功能
如何生成腾讯云建站专用兑换码?
Android中Textview和图片同行显示(文字超出用省略号,图片自动靠右边)
利用JavaScript实现拖拽改变元素大小
企业网站制作这些问题要关注
Windows10如何更改计算机工作组_Win10系统属性修改Workgroup
html如何与html链接_实现多个HTML页面互相链接【互相】
Java遍历集合的三种方式
历史网站制作软件,华为如何找回被删除的网站?
专业商城网站制作公司有哪些,pi商城官网是哪个?
Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验
如何快速辨别茅台真假?关键步骤解析
微信小程序 五星评分(包括半颗星评分)实例代码
动图在线制作网站有哪些,滑动动图图集怎么做?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
JavaScript模板引擎Template.js使用详解
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
php静态变量怎么调试_php静态变量作用域调试技巧【解答】
制作公司内部网站有哪些,内网如何建网站?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
canvas 画布在主流浏览器中的尺寸限制详细介绍
如何在阿里云服务器自主搭建网站?
Swift中swift中的switch 语句
Laravel如何实现API资源集合?(Resource Collection教程)
如何在搬瓦工VPS快速搭建网站?
Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议
JavaScript实现Fly Bird小游戏
html5的keygen标签为什么废弃_替代方案说明【解答】
Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】
Laravel定时任务怎么设置_Laravel Crontab调度器配置
Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制
Laravel怎么为数据库表字段添加索引以优化查询
C++时间戳转换成日期时间的步骤和示例代码
详解jQuery中的事件
想要更高端的建设网站,这些原则一定要坚持!
Python自然语言搜索引擎项目教程_倒排索引查询优化案例
Laravel如何连接多个数据库_Laravel多数据库连接配置与切换教程
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法
上一篇:linux怎么查看ntp是否同步
下一篇:linux autofs是什么
上一篇:linux怎么查看ntp是否同步
下一篇:linux autofs是什么

