Linux定时任务 --- crontab

1.1 定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及开机启动优化的设置中,我们也设置保留了Crond开机自启动,Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

1.2 开始做linux开机自启动服务优化

屏幕快照 2017-02-05 上午11.31.34.png-56.8kB

必须最低保留的启动服务:

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

QQ20170205-122117@2x.png-143.4kB

1.2.1小结

  • 常用服务,必须开机启动的服务crond,sshd,network,rsyslog,sysstat
  • 命令拼接(awk/sed)==>品良==>循环

1.2.2 为什么要使用Crond定时任务?

  • 为什么要使用定时任务呢?
  • 我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
  • 这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

1.2.3 linux系统的定时任务

linux系统中定时任务调度的工作可以分为以下两种情况:
,linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等,这些任务无需我们人为干预。

 
  1. [root@chensiqi1 ~]# ls -l /var/log/messages* #系统的日志

  2. -rw-------. 1 root root 4680 Feb 4 07:41 /var/log/messages

  3. -rw-------. 1 root root 191470 Dec 25 05:44 /var/log/messages-20161225

  4. -rw-------. 1 root root 1492005 Jan 2 06:51 /var/log/messages-20170102

  5. -rw-------. 1 root root 633737 Jan 8 08:02 /var/log/messages-20170108

  6. -rw-------. 1 root root 1594144 Feb 4 04:25 /var/log/messages-20170204

  7. [root@chensiqi1 ~]#

 
  1. [root@chensiqi1 ~]# ls -l /var/log/secure* #用户登录日志

  2. -rw-------. 1 root root 872 Feb 4 07:13 /var/log/secure

  3. -rw-------. 1 root root 5254 Dec 25 05:44 /var/log/secure-20161225

  4. -rw-------. 1 root root 64822 Jan 2 06:27 /var/log/secure-20170102

  5. -rw-------. 1 root root 14187 Jan 8 07:22 /var/log/secure-20170108

  6. -rw-------. 1 root root 13540 Jan 12 00:17 /var/log/secure-20170204

  7. [root@chensiqi1 ~]#

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

例如:服务器时间同步

 
  1. [root@chensiqi1 ~]# crontab -l

  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

  3. [root@chensiqi1 ~]#

用户执行的任务工作,也就是我们运维管理人员执行的任务工作,因此,这个用户执行的任务是我们今天讨论的重点

1.2.4 linux系统下定时任务软件的种类

严格的说,linux系统下的定时任务软件还真不少,例如:at,crontab,anacron
假如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行,在实际工作中,还真没碰到需要用到它的时候。因此,建议大家不要深入研究了,到此我们讲解到这里为止即可。

屏幕快照 2017-02-05 下午1.12.53.png-27.4kB

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

1,开机自启动crond服务

 
  1. [root@chensiqi1 ~]# chkconfig --list | grep crond

  2. crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off

  3. [root@chensiqi1 ~]#

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

 
  1. [root@chensiqi1 ~]# /etc/init.d/crond status

  2. crond (pid 1139) is running...

  3. [root@chensiqi1 ~]#

/etc/init.d 服务启动命令(脚本)
3,如何查看进程
ps -ef | grep crond

  • anacron:这个命令主要用于非7*24小时开机的服务器准备的,anacron并不能指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。
    它会检测服务器停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一遍。

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

1.3 定时任务Crond使用说明

1.3.1 指令语法

crontab [-u user] { -l | -e | -r | -i }
查看系统帮助
man crontab

 
  1. [root@chensiqi1 ~]# crontab --help

  2. crontab: invalid option -- '-'

  3. crontab: usage error: unrecognized option

  4. usage: crontab [-u user] file

  5. crontab [-u user] [ -e | -l | -r ]

  6. (default operation is replace, per 1003.2)

  7. -e (edit user's crontab)

  8. -l (list user's crontab)

  9. -r (delete user's crontab)

  10. -i (prompt before deleting user's crontab)

  11. -s (selinux context)

  12. [root@chensiqi1 ~]#

crontab -l 查看当前用户的定时任务配置

 
  1. [root@chensiqi1 ~]# crontab -l

  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

crontab -e 进入当前用户的定时任务vim编辑模式
屏幕快照 2017-02-05 下午1.45.01.png-53.4kB

crontab -u 用户名 -l 查看指定用户的定时任务设置

 
  1. [root@chensiqi1 ~]# crontab -u root -l

  2. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

  3. [root@chensiqi1 ~]# crontab -u chensiqi -l

  4. no crontab for chensiqi

1.3.2 指令说明

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

QQ20170205-135323@2x.png-48.1kB

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

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

  2. chensiqi

  3. [root@chensiqi1 ~]# su - chensiqi

  4. [chensiqi@chensiqi1 ~]$ crontab -l

  5. You (chensiqi) are not allowed to use this program (crontab)

  6. See crontab(1) for more information

  7. [chensiqi@chensiqi1 ~]$ crontab -e

  8. You (chensiqi) are not allowed to use this program (crontab)

  9. See crontab(1) for more information

 
  1. [root@chensiqi1 ~]# ls /var/spool/cron/

  2. root #默认是没有的,只有创建了定时任务才有

  3. [root@chensiqi1 ~]# cat /var/spool/cron/root

  4. */5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1

1.3.4 指令选项说明含义表

参数含义
-l(字母)查看crontab文件内容
-e编辑crontab文件内容
-r删除crontab文件内容(用的很少)
-u user指定使用的用户执行任务

特别强调:-r参数在生产中很少用,没什么特殊需求必须要用-e进入编辑即可

补充:

crontab { -l | -e } 实际上就是在操作/var/spool/cron/当前用户这样的文件
使用crontab命令的优点:
1,crontab可以检查语法
2,输入方便

1.3.5 定时任务指令的使用格式

默认情况下,当用户建立定时任务规则后,该规则记录对应的配置文件会存在于/var/spool/cron中,其crontab配置文件对应的文件名与登录的用户名一致,如:root用户的定时任务配置文件为/var/spool/cron/root
Crontab定时任务的书写格式很简单,用户的定时任务规则一般分为6个段(每个段通过空格来分隔,系统的定时任务为/etc/crontab,分为7个段,空格来分隔),前五段为时间的设定段,第六段为所要执行的命令或脚本任务段
屏幕快照 2017-02-05 下午2.28.43.png-423.7kB

用户定时任务实例:

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,每个列之间必须要有一个空格。多个空格可以么?自己实践

1.3.6 crontab 语法格式中时间段的含义如下表

含义
第一段代表分钟
第二段代表小时
第三段代表日,天
第四段代表月份
第五段代表星期,周几

提示:时间记忆口诀:分时日月周。取值范围记忆:正常日期时间范围,小学生都会的了

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

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

1.3.8 学习画图来表达说明(亿图)

屏幕快照 2017-02-05 下午3.49.44.png-363.9kB

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: crontab -e是Linux中用于编辑定时任务的命令。通过编辑crontab文件,可以设置定时执行的命令或脚本,实现自动化任务的执行。在crontab文件中,可以设置任务的执行时间、执行频率、执行命令等参数,非常灵活和方便。同时,Linux系统也提供了其他的定时任务工具,如at、anacron等,可以根据实际需求选择使用。 ### 回答2: CrontabLinux定时任务管理程序,它可以让用户在指定的时间自动执行一些命令和脚本,而不需要手动去执行。Crontab的使用非常方便,在Linux系统中,使用crontab -e命令即可打开定时任务编辑器,可以直接在定时任务编辑器中添加需要定时执行的命令或脚本。 crontab -e经常用于管理系统中的定时任务。当打开定时任务编辑器时,可以在编辑器中设置需要运行的命令,然后按照特定的语法规则来设置运行该命令的时间。Crontab支持非常灵活的时间设置方式,如每分钟、每小时、每天、每周等等,用户可以根据自己的需要来进行设置。 在编辑器中添加定时任务时,需要按照以下格式来设置: * * * * * Command to be executed - - - - - | | | | | | | | | +----- day of the week (0 - 6) (Sunday=0) | | | +------- month (1 - 12) | | +--------- day of the month (1 - 31) | +----------- hour (0 - 23) +------------- min (0 - 59) 其中,*代表所有可能的值,可以通过逗号分隔的方式来指定多值,例如1,2,3代表1、2、3三个值。另外,也支持代表范围的方式来指定任务的时间,例如1-5代表1到5这五个值范围。 通过crontab -e命令添加的定时任务会被保存在系统的/var/spool/cron目录下,以用户名的形式命名。用户可以使用crontab -l命令来列出当前的定时任务列表。为了避免定时任务冲突或出错,推荐在编辑定时任务前备份原有的定时任务,以便在出现问题时进行恢复。 ### 回答3: 在Linux系统中,我们可以使用crontab定时任务来自动化执行一些重复性的任务,例如备份数据、清除临时文件、定时发送邮件等等。crontab是一种用来设置定时任务的命令,它可以定期在指定时间执行一些特定的操作。 首先,我们需要了解crontab -e的格式。crontab -e命令中的“-e”表示编辑当前用户的定时任务,这些任务将会按照特定的格式执行,格式如下: •第一位表示分钟,范围为0~59 •第二位表示小时,范围为0~23 •第三位表示日期,范围为1~31 •第四位表示月份,范围为1~12 •第五位表示星期几,范围为0~6,其中0表示星期天 对于每一个字段,可以使用一个星号(*)代替,表示该字段不限制。而使用逗号(,)可以指定多个值,使用连词号(-)可以指定一个区间,使用斜线(/)可以指定间隔,例如: •每分钟执行:* * * * * •每天早上7点执行:0 7 * * * •每天1点到3点执行:0 1-3 * * * •每隔2小时执行:0 */2 * * * •每周2和5的早上7点执行:0 7 * * 2,5 当我们使用crontab -e命令编辑完定时任务后,我们需要保存并退出。此时,Linux系统会自动将任务添加到crontab中,任务会在指定的时间自动执行。如果需要查看当前用户的所有定时任务,可以使用crontab -l命令。 总之,Linuxcrontab -e定时任务是非常实用的功能,可以让我们充分利用时间自动化完成一些繁琐的重复性工作,提高工作效率,减轻工作负担。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值