0

0

Linux中如何配置定时任务?crontab与at命令详解

P粉602998670

P粉602998670

发布时间:2025-06-26 11:31:01

|

579人浏览过

|

来源于php中文网

原创

linux系统中定时任务主要通过crontab和at实现,1.crontab用于周期性任务,如每天备份;格式为“分钟 小时 天 月 星期几 命令”,使用crontab -e编辑、-l查看、-r删除任务;2.at适用于一次性延后执行任务,如十分钟后提醒喝水;使用at now + 时间添加任务,依赖atd服务运行;3.注意事项包括权限设置、环境变量差异、输出重定向及邮件通知等,需特别注意路径和权限问题以确保任务正常执行。

Linux中如何配置定时任务?crontab与at命令详解

在Linux系统中,定时任务的配置主要通过 crontabat 两个命令来实现。它们各自有不同的使用场景:crontab 适合周期性执行的任务,比如每天备份、每小时检查日志等;而 at 更适用于一次性延后执行的任务,比如“十分钟后提醒我喝水”。

Linux中如何配置定时任务?crontab与at命令详解

下面我们就分别来看看这两个工具的使用方法和一些实用技巧。

Linux中如何配置定时任务?crontab与at命令详解

crontab:周期性定时任务的首选

crontab 是 Linux 中最常用的定时任务管理工具之一。它允许你按照分钟、小时、天、月、星期几等时间单位来设定任务执行规则。

使用方式:

  1. 编辑当前用户的定时任务:

    Linux中如何配置定时任务?crontab与at命令详解
    crontab -e
  2. 查看当前用户的所有定时任务:

    crontab -l
  3. 删除所有定时任务(慎用):

    crontab -r

时间格式说明:

一个标准的 crontab 行由6个字段组成:

*     *     *     *     *    command to be executed
-     -     -     -     -
|     |     |     |     |
minute hour day month weekday

例如:

0 3 * * * /backup/script.sh

表示每天凌晨3点执行 /backup/script.sh 脚本。

Elser AI Comics
Elser AI Comics

一个免费且强大的AI漫画生成工具,助力你三步创作自己的一出好戏

下载
小贴士:如果你写的是脚本任务,建议在脚本开头加上环境变量定义,或者使用绝对路径,避免因为环境变量不同导致执行失败。

at:临时延迟执行任务的好帮手

当你只需要执行一次,并且希望稍后执行时,at 命令会更合适。比如你想在10分钟后运行某个脚本,就可以用它。

使用方式:

  1. 安装 at 工具(某些系统默认未安装):

    sudo apt install at    # Debian/Ubuntu
    sudo yum install at    # CentOS/RHEL
  2. 添加一个任务:

    at now + 5 minutes
    > echo "Hello, this is a test" >> /tmp/test.txt
    Ctrl+D 保存退出
  3. 查看待执行的任务列表:

    atq
  4. 删除某个任务:

    atrm [任务编号]

示例:

at 18:30 tomorrow
> /scripts/cleanup.sh
Ctrl+D

上面这段命令会在明天下午6点半执行清理脚本。

注意:at 命令依赖于 atd 服务是否正在运行,你可以用 systemctl status atd 来检查服务状态。


实际使用中的几个常见问题

  • 权限问题:确保脚本有执行权限,否则任务不会生效。
  • 环境变量差异:cron 的环境变量通常比交互式 shell 简单很多,所以尽量使用绝对路径。
  • 输出重定向:如果不希望任务输出信息打扰你,可以将 stdout 和 stderr 重定向到文件或 /dev/null
    0 3 * * * /script.sh > /dev/null 2>&1
  • 邮件通知:默认情况下,cron 会在任务输出时发送邮件给用户。如果你不需要,可以在 crontab 文件顶部加上 MAILTO=""

基本上就这些。不管是定期执行还是临时延后,crontab 和 at 都能满足大多数日常需求。虽然功能不复杂,但容易忽略的细节也比较多,特别是路径和权限方面的问题,需要多加注意。

相关专题

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

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

232

2023.09.22

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

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

436

2024.03.01

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

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

1349

2023.06.21

如何安装LINUX
如何安装LINUX

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

703

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修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

776

2023.07.05

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

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

573

2023.07.06

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

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

546

2023.07.20

PS使用蒙版相关教程
PS使用蒙版相关教程

本专题整合了ps使用蒙版相关教程,阅读专题下面的文章了解更多详细内容。

23

2026.01.19

热门下载

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

精品课程

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

共48课时 | 7.4万人学习

Git 教程
Git 教程

共21课时 | 2.8万人学习

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

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