资讯专栏INFORMATION COLUMN

【Linux】定时任务crontab

Invoker / 3251人阅读

摘要:在或类系统中,通常使用命令在指定的时间执行一个脚本或者一系列命令,也就是通常所说的定时任务。进程是中的守护进程,在系统后台运行,它会默认每分钟持续地检查文件目录目录,读取调度任务并执行。二命令命令可以用来创建编辑查询删除定时任务。

在Linux或类Unix系统中,通常使用 crontab 命令在指定的时间执行一个shell脚本或者一系列Linux命令,也就是通常所说的定时任务。

一、cron 进程

在详细介绍crontab之前,必须要说一下 cron 进程

1、cron进程是linux中的守护进程,在系统后台运行,它会(默认每分钟)持续地检查/etc/crontab文件、/etc/cron.*/目录、/var/spool/cron/ 目录,读取调度任务并执行。

2、所有用户创建的crontab文件都保存在/var/spool/cron/ 目录,被cron服务定时检查。


二、crontab命令:

crontab 命令可以用来创建、编辑、查询、删除定时任务。

通过 crontab 命令,每个用户都可以编辑或者配置自己的定时任务,并拥有自己的 crontab 文件。

1、创建/编辑 crontab 文件

在 linux 命令行中输入crontab -e, 即可创建或编辑用户自己的crontab文件:

crontab -e

当crontab文件不存在时,即为创建;已存在时即为编辑;

此时,可以输入具体的crontab命令,用来增加、修改或删除当前用户的某一项任务。

在crontab文件中,每一行命令代表一个定时任务!

2、crontab 语法(字段介绍)

crontab -e之后,即可输入crontab命令,具体语法如下:

    1 2 3 4 5 /path/to/command arg1 arg2
    或者:
    1 2 3 4 5 /root/ntp_sync.sh

各字段的格式:

{minute} {hour} {day-of-month} {month} {day-of-week} {full-path-to-shell-script}
分钟 (0-59) 小时 (0-23) 日期 (1-31) 月份 (1-12) 一周当中的某天 (0-7 [7 或 0 代表星期天]) 计划执行的脚本或命令的完整路径
3、crontab 命令示例

(结合第4部分的操作符使用方法一起学习)

    # 每隔 5 分钟运行一次 backupscript 脚本 ##
    */5 * * * * /root/backupscript.sh
    
    ### 每天的凌晨 1 点运行 backupscript 脚本 ##
    0 1 * * * /root/backupscript.sh
    
    ### 每月的第一个凌晨 3:15 运行 backupscript 脚本 ##
    15 3 1 * * /root/backupscript.sh
    
    ### 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
    59 23 * * 1,2,3,4,5 /root/bin/backup.sh
    或者:
    59 23 * * 1-5 /root/bin/backup.sh
    
    ### 每周六、周日的3点10分执行hello.sh
    10 3 * * 0,6 hello.sh
    
    ### 晚上11点到早上8点之间每两个小时,及每天早上八点,输出信息到文件中
    0 23-7/2,8 * * * echo "have a good dream:)" >> /tmp/test.txt

    ### 每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点执行命令
    0 11 4 * 1-3 command
可以把经常要做的一些事放到其中,简化工作量,如每周一检查服务器的运行状态,查看报告,杀掉一些进程等等……
4、crontab 命令辅操作符

操作符允许为一个字段指定多个值,这里有三个操作符可供使用:

星号 (*) : 代表任何时刻

举个例子,在小时字段中,一个星号等同于每个小时;在月份字段中,一个星号则等同于每月。

逗号 (,) : 在一个字段上指定多个值,例如:1,5,10,15,20,25

横杠 (-) : 指定了一个值的范围

例如:5-15 ,等同于使用逗号操作符键入的 5,6,7,8,9,...,13,14,15。

分隔符 (/) : 代表‘每’,/n表示每隔n单位间隔

例如:小时字段为*/5 表示每5小时,也可以写成0-23/5,意思一样。其它字段也是类似的。

5、crontab 查看和删除某用户所有的定时任务
    crontab -l  # 默认查看当前用户的所有定时任务

    # 使用-u 参数查看指定用户的定时任务,需要以root用户身份执行
    crontab -u username -l  

    crontab -r  # 删除当前用户的crontab的所有任务内容,慎用!
    
    ### 删除指定用户名下的定时任务,需要以 root 用户身份执行,慎用!
    crontab -r -u username
6、禁用邮件输出

默认情况下,某个命令或者脚本的输出内容(如果有的话)会发送到你的本地邮箱账户中。若想停止接收 crontab 发送的邮件,需要添加 >/dev/null 2>&1 这段内容到执行的命令的后面,例如:

0 3 * * * /root/backup.sh >/dev/null 2>&1
7、使用特殊字符串

linux中提供了以下 8 个特殊字符串,可以用来替代crontab命令的前五个字段,这样不但可以节省时间,还可以提高可读性。

特殊字符 含义
@reboot 在每次启动时运行一次
@yearly 每年运行一次, 等同于 “0 0 1 1 *”
@annually (同 @yearly)
@monthly 每月运行一次, 等同于 “0 0 1
@weekly 每周运行一次, 等同于 “0 0 0”
@daily 每天运行一次, 等同于 “0 0 *”
@midnight (同 @daily)
@hourly 每小时运行一次, 等同于 “0

示例:

## 每小时运行一次 ntpdate 命令
@hourly /path/to/ntpdate

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/33762.html

相关文章

  • Linux 定时任务 Crontab 介绍

    摘要:在中使用就可以创建定时任务。例如,对于用户定时任务就会写入到。没有一个统一的后台查看各个定时任务的状态。实现了以下功能通过文件,之九华存储定时任务。支持秒级定时任务支持基于日期固定时间间隔和类型的定时任务。   在linux中使用 Crontab-e就可以创建定时任务。定时任务写到var/spool/cron目录下对应的用户文件。例如,对于用户zj,定时任务就会写入到 var/spoo...

    scwang90 评论0 收藏0
  • Linux crontab 访问PHP URL完成定时任务

    摘要:而我本人需要完成的任务是定时访问一个文件链接去生成,所以访问就不能用去完成,而是要用。本站的这篇下执行定时任务命令详解写的非常详细,建议看一下。 crontab -e 新建/编辑一个任务crontab -l 列出所有任务 crontab 格式: 基本格式 :分钟 小时 日 月 星期 命令第1列表示分钟1~59 每分钟用或者 /1表示第2列表示小时1~23(0表示0点...

    zhangyucha0 评论0 收藏0
  • Linux crontab 访问PHP URL完成定时任务

    摘要:而我本人需要完成的任务是定时访问一个文件链接去生成,所以访问就不能用去完成,而是要用。本站的这篇下执行定时任务命令详解写的非常详细,建议看一下。 crontab -e 新建/编辑一个任务crontab -l 列出所有任务 crontab 格式: 基本格式 :分钟 小时 日 月 星期 命令第1列表示分钟1~59 每分钟用或者 /1表示第2列表示小时1~23(0表示0点...

    QiuyueZhong 评论0 收藏0
  • Linux crontab 访问PHP URL完成定时任务

    摘要:而我本人需要完成的任务是定时访问一个文件链接去生成,所以访问就不能用去完成,而是要用。本站的这篇下执行定时任务命令详解写的非常详细,建议看一下。 crontab -e 新建/编辑一个任务crontab -l 列出所有任务 crontab 格式: 基本格式 :分钟 小时 日 月 星期 命令第1列表示分钟1~59 每分钟用或者 /1表示第2列表示小时1~23(0表示0点...

    Wildcard 评论0 收藏0
  • Linux 下执行定时任务 crontab 命令详解

    摘要:安装与配置服务安装服务操作说明启动服务关闭服务重启服务重新载入配置查看服务状态手动启动服务查看服务是否已设置为开机启动,执行命令加入开机自动启动 许多内容抄录自自 竹子的博客 1、先来一个小小的例子 查看当前路径: [root@root test]# pwd /home/admin/test [root@root test]# crontab -l 查看当前用户的定时任务 ...

    QiuyueZhong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<