详解Linux定时任务Crontab的介绍与使用

目录
  • 一.cron介绍
  • 二.crontab的使用
  • 三.常见定时任务设置
  • 四.实例操作
    • 1.文件实时写入
    • 2. 定期清理对应目录下的文件
  • 五.常见错误

一.cron介绍

linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题。

1. var/spool/cron/

目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名

2. _/etc/crontab

这个文件负责调度各种管理和维护任务。

3. /etc/cron.d/

这个目录用来存放任何要执行的crontab文件或脚本。

我们还可以把脚本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目录中,让它每小时/天/星期、月执行一次。

二.crontab的使用

我们常用的命令如下:

crontab [-u username]    //省略用户表表示操作当前用户的crontab

1. -e (编辑工作表)

2. -l (列出工作表里的命令)

3. -r (删除工作作)

我们用crontab -e进入当前用户的工作表编辑,是常见的vim界面。每行是一条命令。

crontab的命令构成为 时间+动作,其时间有分、时、日、月、周五种,操作符有

  • * 取值范围内的所有数字
  • / 每过多少个数字
  • - 从X到Z
  • ,散列数字

三.常见定时任务设置

实例1:每1分钟执行一次myCommand

<strong>* * * * * myCommand</strong>

实例2:每小时的第3和第15分钟执行

<strong>3,15 * * * * myCommand</strong>

实例3:在上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 * * * myCommand</strong>

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 */2 * * myCommand</strong>

实例5:每周一上午8点到11点的第3和第15分钟执行

<strong>3,15 8-11 * * 1 myCommand</strong>

实例6:每晚的21:30重启smb

<strong>30 21 * * * /etc/init.d/smb restart</strong>

实例7:每月1、10、22日的4 : 45重启smb

<strong>45 4 1,10,22 * * /etc/init.d/smb restart</strong>

实例8:每周六、周日的1 : 10重启smb

<strong>10 1 * * 6,0 /etc/init.d/smb restart</strong>

实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb

<strong>0,30 18-23 * * * /etc/init.d/smb restart</strong>

实例10:每星期六的晚上11 : 00 pm重启smb

<strong>0 23 * * 6 /etc/init.d/smb restart</strong>

实例11:每一小时重启smb

<strong>0 */1 * * * /etc/init.d/smb restart</strong>

实例12:晚上11点到早上7点之间,每隔一小时重启smb

<strong>0 23-7/1 * * * /etc/init.d/smb restart</strong>

四.实例操作

1.文件实时写入

1) 查看定时任务状态

[root@localhost ~]#<strong>service crond status</strong>
Redirecting to /bin/systemctl status crond.service
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active <strong>(running)</strong> since Mon 2021-09-20 01:22:18 CST; 24s ago
 Main PID: 17516 (crond)
   CGroup: /system.slice/crond.service
           └─17516 /usr/sbin/crond -n

2) 关闭/开启定时任务

[root@localhost ~]# <strong>service crond stop</strong>
Redirecting to /bin/systemctl stop crond.service
[root@localhost ~]# <strong>service crond start</strong>
Redirecting to /bin/systemctl start crond.service

3) 编辑定时任务

[root@localhost ~]# crontab -e
* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt #每分钟执行一次

4) 查看已存在的定时任务

[root@localhost ~]# crontab -l
* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt

5) 验证校验生成

[root@localhost ~]# cat 123.txt
2021-09-20 01:13:01
2021-09-20 01:14:01
2021-09-20 01:15:01

2. 定期清理对应目录下的文件

1) 预制数据:

[root@localhost test20210920]# echo abcdefg | tee -a file{1..5}.log
abcdefg
[root@localhost test20210920]# du -sh *
4.0K    file1.log
4.0K    file2.log
4.0K    file3.log
4.0K    file4.log
4.0K    file5.log

2) 添加定时任务

[root@localhost ~]# crontab -e

* * * * * find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;

3) 检查定时任务执行,1分钟左右

[root@localhost test20210920]# du -sh *
0    file1.log
0    file2.log
0    file3.log
0    file4.log
0    file5.log

4) 查看定时任务执行情况:

[root@localhost test20210920]# tail -5 /var/log/cron
Sep 20 01:56:33 localhost crontab[17797]: (root) END EDIT (root)
Sep 20 01:56:51 localhost crontab[17802]: (root) BEGIN EDIT (root)
Sep 20 01:56:54 localhost crontab[17802]: (root) END EDIT (root)
Sep 20 01:57:01 localhost CROND[17809]: (root) CMD (find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;)
Sep 20 01:58:01 localhost CROND[17819]: (root) CMD (find  /root/test20210920  -type f -name '*.log' -exec cp /dev/null {} \;)

五.常见错误

1.errors in crontab file, can't install

解决方式:

因为你的crontab格式错误,即没有按照规则写

查看原命令并修正:

echo `date +"%Y-%m-%d %H:%M"` >> 123.txt

修改后正常保存:

* * * * * echo `date +"%Y-%m-%d %H:%M"` >> 123.txt

2.接以上错误:

邮件内报错:cat /var/spool/mail/root

解决方式: 

crontab内%需要转义,修复定时任务正常

* * * * * echo `date '+\%Y-\%m-\%d \%H:\%M:\%S'` >> 123.txt

以上就是详解Linux定时任务Crontab的介绍与使用的详细内容,更多关于Linux定时任务Crontab的资料请关注我们其它相关文章!

(0)

相关推荐

  • linux定时器crontab的使用教程

    编辑:crontab –u root –e 列表:crontab –u root –l 删除:crontab –u root –r 每五分钟执行  */5 * * * * 每小时执行     0 * * * * 每天执行        0 0 * * * 每周执行       0 0 * * 0 每月执行        0 0 1 * * 每年执行       0 0 1 1 * */1   *     *     *     *     ls >>/tmp/ls.txt 1.作用 使用cro

  • 详解linux 定时任务 crontabs 安装及使用方法

    安装 crontab yum install crontabs centos7 自带了我没有手动去装 启动/关闭 service crond start // 启动服务service crond stop // 关闭服务service crond restart // 重启服务service crond reload // 重新载入配置 查看 crontab 服务是否已设置为开机启动 systemctl list-unit-files | grep enable | grep crond 将 c

  • linux如何利用crontab添加定时任务详解

    前言 linux 系统是由 crond这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的. crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. 我们可以看下crond这个系统服务的状态: 从这里可以看出来crond服务是自启动(enabled),且正在运行的(active) 另外, 由于使用者自己也可以设置计划任务,所以, Linux 系统也提供了使用者控

  • Linux下的crontab定时执行任务命令详解

    在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间. cron的配置文件称为"crontab",是"cron table"的简写. 一.cron服务 cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业.   service crond start    //启动服务   service crond stop     //

  • Linux定时任务Crontab命令使用详解与总结

    crontab命令是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行 如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比较高,一个要求你的程序是24X7小时不宕机,一个是要求你的调度程序比较可靠,实际工作中,90%的程序都没有必要花这么多时间和精力去解决上面的两个问题的,只需要写好自己的业务逻辑,通过Crontab这 工业级程序去调度就行了,Crontab的可靠性,健壮性,大家应该是毫无疑问的. crontab命令简易

  • Linux  crontab 命令的使用

    1.命令简介 contab(cron table) 命令被用管理用户的需要周期性执行的任务,与 Windows 下的计划任务类似,当安装完操作系统后,默认会安装此服务工具,并且会自动启动 crond 进程,crond 进程每分钟会检查是否有要执行的任务,如果有则执行该任务. Linux 下的任务调度分为两类,系统任务调度和用户任务调度. 系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘.日志清理等./etc/crontab 文件是系统任务调度的配置文件. 用户任务调度:用户定期要执行

  • 详解Linux定时任务Crontab的介绍与使用

    目录 一.cron介绍 二.crontab的使用 三.常见定时任务设置 四.实例操作 1.文件实时写入 2. 定期清理对应目录下的文件 五.常见错误 一.cron介绍 linux内置的cron进程能帮我们实现这些需求,cron搭配shell脚本,非常复杂的指令也没有问题. 1. var/spool/cron/ 目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名 2. _/etc/crontab 这个文件负责调度各种管理和维护任务. 3. /etc/cron.d/

  • 详解Linux下crontab的使用与注意事项

    crontab是一个用于设置周期性被执行的指令.其守护进程为crond. crontab分为两种配置模式,一种为用户级的crontab,一种为系统级的crontab,这里我们分开来谈. 用户级crontab 用户使用新建循环型工作调度时,使用的crontab命令,crontab -e所有用户都可以使用,普通用户也只能为自己设置计划任务.然后自动写入/var/spool/cron/usename 用户控制文件 /etc/cron.allow : 将可以使用crontab的用户写入,仅该文件内的用户

  • 详解linux下利用crontab创建定时任务

    Linux下可以利用crontab创建定时任务. 常用搭配 crontab -e 编辑任务 crontab -l 查看所有任务[该用户] crontab -r 取消所有任务[该用户] 任务格式 × × × × × +命令(具体任务) 前5个参数表示时间,依次为: 参数 范围 分钟 0-59 小时 0-23 日期 1-31 月份 1-12 星期 0-6(0代表星期日) 特殊符号 为了精确表示定时,需要一些特殊符号来描述具体的任务执行时间.有以下几个符号: "/" 代表每,每隔多长时间 &

  • 一文详解Golang 定时任务库 gron 设计和原理

    目录 cron 简介 gron 定时参数 源码解析 Cron Entry 按照时间排序 新增定时任务 启动和停止 Schedule 扩展性 经典写法-控制退出 结语 cron 简介 在 Unix-like 操作系统中,有一个大家都很熟悉的 cli 工具,它能够来处理定时任务,周期性任务,这就是: cron. 你只需要简单的语法控制就能实现任意[定时]的语义.用法上可以参考一下这个Crontab Guru Editor,做的非常精巧. 简单说,每一个位都代表了一个时间维度,* 代表全集,所以,上面

  • 详解Linux命令中的正则表达式

    命令中的正则表达式 如果要在命令输出或文本中筛选内容时使用模糊查找,就需要使用正则表达式.正则表达式是一套由多个元字符组成的模糊查找模式,使用正则表达式可以快速查找和定位文本中指定的内容. 1.单字符匹配符.  正则表达式主要由一些元字符和匹配模式组成 单字符匹配符可以匹配任意单个字符,这个字符的功能和文件名匹配符中的?功能相同 使用正则表达式查找文本,首先需要使用元字符组成一个查找模式 (1)使用查找模式时,通常将其放入两个斜杠//中,然后再放入命令,例如要在一个文本中查找匹配模式/.i...

  • 详解Linux命令iostat

    Linux系统出现了性能问题,一般我们可以通过top.iostat.free.vmstat等命令来查看初步定位问题.在一个以前看到系统监控工具,总在想那些监控工具的代理,如何收集系统性能信息,io性能,cpu使用,带宽使用等信息,偶然发现,不同系统均提供有性能分析工具的,代理可通过这些命令获取系统性能信息,个人猜测,不知道具体是不是这样的.其中iostat可以给我们提供丰富的IO状态数据,下边就来看一下iostat如何使用,命令能够输出那些信息. 简述 Linux系统中通过iostat我们能查看

  • 详解Linux下读取位图的注意事项

    详解Linux下读取位图的注意事项 在Linux下读取位图遇到的问题,很好地体现了linux与Windows操作系统的不同.按理说位图格式与操作系统无关,读取也应该无关,实际上在位图读到内存中时已经不同.下面主要介绍自己在Linux下操作位图遇到的问题. (一).位图结构 位图一开始是两个结构体,包括位图的详细信息,是读取后面数据的关键.所以读取位图首先要正确读取这两个结构体:BITMAPFILEHEADER和BITMAPINFOHEADER.其具体定义为: typedef struct tag

  • 详解Linux下的sudo及其配置文件/etc/sudoers的详细配置

    详解Linux下的sudo及其配置文件/etc/sudoers的详细配置 1.sudo介绍 sudo是linux下常用的允许普通用户使用超级用户权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如halt,reboot,su等等.这样不仅减少了root用户的登陆 和管理时间,同样也提高了安全性.Sudo不是对shell的一个代替,它是面向每个命令的. 它的特性主要有这样几点: § sudo能够限制用户只在某台主机上运行某些命令. § sudo提供了丰富的日志,详细地记录了每个用

随机推荐