Linux之定时任务Crond详解

 更新时间:2017年05月09日 11:19:12   作者:前程明亮  
本篇文章主要介绍了Linux之定时任务Crond详解 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务。

Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。 

必须保留的启动服务:

  1. crond:定时任务服务
  2. network:网络服务
  3. rsyslog:日志服务
  4. sshd:远程链接服务
  5. sysstat:系统监控服务(涉及一系列监控工具)

 

为什么要使用定时任务呢?

我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?

这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

ls -l /var/log/messages* #系统的日志

ls -l /var/log/secure* #用户登录日志

用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。

服务器时间同步

复制代码 代码如下:

echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root

可通过上面的命令设置每5分钟执行一次。每次将互联网时间同步到本地Linux系统。

crontab -l 查看当前用户的定时任务配置。*号 下面会详讲~~

time.nist.gov是NTP服务器地址 time.windows.com,微软自家的时间服务器。 更多请参考 ==> 国内常用NTP服务器地址及IP

crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

1、开机自启动crond服务

2、此时此刻服务的状态(查看,开启,关闭)

3、如何查看进程

ps -ef | grep crond

小结提示:

  • 我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令
  • crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略
  • 几乎每个服务器都会用到crond服务
  • 上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

 定时任务Crond使用说明

[root@chengliang ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage: crontab [-u user] file
  crontab [-u user] [ -e | -l | -r ]
    (default operation is replace, per 1003.2)
  -e (edit user's crontab)
  -l (list user's crontab)
  -r (delete user's crontab)
  -i (prompt before deleting user's crontab)
  -s (selinux context)
[root@chengliang ~]# 
  1. crontab -l 查看当前用户的定时任务配置
  2. crontab -e 进入当前用户的定时任务vim编辑模式
  3. crontab -u 用户名 -l 查看指定用户的定时任务设置

 重点

通过crontab我们可以在固定的间隔时间执行指定的系统指令或script脚本。时间间隔的单位可以是分钟,小时,日,月,周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等企业运维场景工作

使用者权限及定时任务文件

文件 说明
/etc/cron.deny(拒绝) 该文件中所列用户不允许使用crontab
/etc/cron.allow(允许) 该文件优先级高于cron.deny(默认不存在,一般不用)
/var/spool/cron/ 所有用户crontab配置文件默认都存在此目录,文件名以用户名命名

[root@chengliang ~]# cat /etc/cron.deny 
zcl
[root@chengliang~]# su - zcl
[chensiqi@chengliang~]$ crontab -l
You (chensiqi) are not allowed to use this program (crontab)
See crontab(1) for more information
[zcl@chengliang~]$ crontab -e
You (chensiqi) are not allowed to use this program (crontab)
See crontab(1) for more information

crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root

[root@chengliang ~]# ls /var/spool/cron/
root  #默认是没有的,只有创建了定时任务才有
[root@chengliang ~]# cat /var/spool/cron/root
*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段

用户定时任务实例:

01 * * * * cmd #每小时的01分钟执行
02 04 * * * cmd #每天4点的02分钟执行
22 14 * * 00 cmd #每周日的14点22分执行
42 04 01 * * cmd #每月1日的4点42分执行

提示:

1、cmd为要执行的命令或脚本,例如:/bin/sh /server/scripts/chensiqi.sh

2、每个列之间必须要有一个空格。多个空格可以么?自己实践  ==> 经我本人测试有多个空格也可以执行!!

时间记忆口诀:分时日月周

crontab 语法格式中特殊符号含义如下表

特殊符号 含义
* *号,表示任意时间都,实际就是“每”的意思
- 减号表示分隔符,表示一个时间范围,区间段,如17-19点,例如:每天的17,18,19点的00分执行任务。00 17-19 * * * cmd
逗号,表示分隔时段的意思例如每天的5点10点00分执行任务,00 5,10 * * * cmd
/n n代表数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成/*10 * * * * cmd,其中,/10,的范围是0-59,因此也可以写成0-59/10

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Linux中dd命令使用实例教程

    Linux中dd命令使用实例教程

    dd命令用指定大小的块拷贝一个文件,并在拷贝的同时进行指定的转换。下面这篇文章主要给大家介绍了关于Linux中dd命令使用的相关资料,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-05-05
  • linux如何通过防火墙iptables做隔离端口的脚本

    linux如何通过防火墙iptables做隔离端口的脚本

    这篇文章主要介绍了linux如何通过防火墙iptables做隔离端口的脚本问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • 如何实现连接一个Linux服务器

    如何实现连接一个Linux服务器

    这篇文章主要介绍了如何实现连接一个Linux服务器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Linux 操作系统下Web服务器配置详细介绍

    Linux 操作系统下Web服务器配置详细介绍

    Linux 操作系统下Web服务器配置详细介绍,需要的朋友可以参考下。
    2009-10-10
  • Linux文件操作高频使用命令小结

    Linux文件操作高频使用命令小结

    这篇文章主要介绍了Linux文件操作高频使用命令小结,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • Linux删除文件不同方法效率对比

    Linux删除文件不同方法效率对比

    这篇文章主要介绍了Linux删除文件不同方法效率对比,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • Ubuntu18.04更换国内源的方法示例

    Ubuntu18.04更换国内源的方法示例

    这篇文章主要介绍了Ubuntu18.04更换国内源的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • 关于Linux的mariadb数据库

    关于Linux的mariadb数据库

    这篇文章主要介绍了关于Linux的mariadb数据库的相关资料,主要就是用户可以对文件中的数据进行新增、截取、更新、删除等操作,需要的朋友可以参考下面文章内容
    2021-09-09
  • PHP程序员玩转Linux系列 使用supervisor实现守护进程

    PHP程序员玩转Linux系列 使用supervisor实现守护进程

    这篇文章主要为大家详细介绍了PHP程序员玩转Linux系列文章,使用supervisor实现守护进程,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Linux下Android开发环境搭建的操作方法

    Linux下Android开发环境搭建的操作方法

    下面小编就为大家分享一篇Linux下Android开发环境搭建的操作方法,具有很好的参考价值,希望对大家有所帮助
    2017-12-12

最新评论