0

0

Linux任务调度教程_crontabat命令与定时任务实战

舞夢輝影

舞夢輝影

发布时间:2026-01-03 09:46:02

|

528人浏览过

|

来源于php中文网

原创

linux任务调度教程_crontabat命令与定时任务实战

Linux 中的定时任务主要靠 cron 系统实现,而 crontab 是管理用户级定时任务的核心命令。注意:没有标准的 at 命令与 crontab 混用为“crontabat” ——这是常见误解。at 用于**一次性**延时任务,crontab 用于**周期性**重复任务,二者机制不同、配置独立。

crontab:设置周期性定时任务

每个用户(包括 root)都有自己的 crontab 文件,通过 crontab -e 编辑,内容按固定时间格式定义任务执行计划。

  • 时间字段顺序为:分 时 日 月 周 命令(共 6 字段),例如 30 2 * * * /backup.sh 表示每天凌晨 2:30 执行脚本
  • 支持符号:*(任意值)、,(列举)、-(范围)、/(步长),如 0 9-17/2 * * 1-5 表示工作日每两小时(9、11、13、15、17 点)整点运行
  • 编辑保存后自动加载,无需重启服务;可用 crontab -l 查看,crontab -r 清空(慎用)
  • 命令中涉及路径、环境变量时建议写绝对路径,并显式指定 SHELL 和 PATH,避免因 cron 环境精简导致执行失败

at:安排单次延迟执行任务

at 适合执行一次性的未来任务,比如“今晚 23:00 关机”或“10 分钟后发邮件”。它不依赖 cron 守护进程持续调度,而是由 atd 后台服务管理队列。

MedPeer
MedPeer

AI驱动的一站式科研服务平台

下载
  • 使用前确认 atd 已启用:sudo systemctl enable --now atd
  • 输入 at 23:00 回车后,进入交互模式,输入要执行的命令(如 shutdown -h now),按 Ctrl+D 结束
  • 查看待执行任务:atq;取消某任务:atrm [job_id]
  • 注意:at 默认使用用户当前 shell 环境,但不读取 ~/.bashrc 等文件,复杂命令建议封装为脚本并用绝对路径调用

常见问题与调试技巧

定时任务“看似添加成功却没运行”是高频痛点,多数源于环境差异或权限配置。

  • 检查 cron 是否运行:systemctl status cron(Debian/Ubuntu)或 systemctl status crond(RHEL/CentOS)
  • 查看系统 cron 日志:grep CRON /var/log/syslog(Ubuntu)或 journalctl -u cron -n 20
  • 在 crontab 中重定向输出便于排查:* * * * * /path/to/script.sh >> /tmp/script.log 2>&1
  • 测试命令是否能在 cron 环境下运行:切换到对应用户,用 env -i /bin/sh 模拟最小环境再执行命令

安全与最佳实践

不当配置可能引发权限泄露或系统负载异常,尤其在生产环境中需谨慎。

  • 避免在 root 的 crontab 中直接写敏感操作;优先用普通用户 + sudo(需配置免密)方式降低风险
  • 不要把密码、密钥写在脚本或 crontab 行内;改用配置文件 + 权限控制(如 chmod 600
  • 对关键任务加锁防重复执行(如用 flock):* * * * * flock -n /tmp/myjob.lock -c "/path/to/script.sh"
  • 定期审计定时任务:for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l 2>/dev/null; done

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

230

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

434

2024.03.01

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

1345

2023.06.21

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

700

2023.06.29

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

294

2023.06.30

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

773

2023.07.05

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

571

2023.07.06

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

545

2023.07.20

php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.5万人学习

Git 教程
Git 教程

共21课时 | 2.4万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号