1-定时任务crond介绍
Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6 linux操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及开机启动优化的设置中,我们也设置保留了Crond开机自启动,Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。
2-为什么要使用crond 定时任务?
我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。
3-开机必须最低保留的启动服务
crond:定时任务服务
network:网络服务
rsyslog:日志服务
sshd:远程链接服务
sysstat:系统监控服务(涉及一系列监控工具)
4-linux系统的定时任务
linux系统中定时任务调度的工作可以分为以下两种情况:
一,linux系统自身定期执行的任务工作:系统周期性自行执行的任务工作,如轮询系统日志,备份系统数据,清理系统缓存等,这些任务无需我们人为干预。
[root@ningjiancheng1 ~]# ls -l /var/log/messages* #系统的日志
-rw-------. 1 root root 4680 Feb 4 07:41 /var/log/messages
-rw-------. 1 root root 191470 Dec 25 05:44 /var/log/messages-20161225
-rw-------. 1 root root 1492005 Jan 2 06:51 /var/log/messages-20170102
-rw-------. 1 root root 633737 Jan 8 08:02 /var/log/messages-20170108
-rw-------. 1 root root 1594144 Feb 4 04:25 /var/log/messages-20170204
[root@ningjiancheng1 ~]# ls -l /var/log/secure* #用户登录日志
-rw-------. 1 root root 872 Feb 4 07:13 /var/log/secure
-rw-------. 1 root root 5254 Dec 25 05:44 /var/log/secure-20161225
-rw-------. 1 root root 64822 Jan 2 06:27 /var/log/secure-20170102
-rw-------. 1 root root 14187 Jan 8 07:22 /var/log/secure-20170108
-rw-------. 1 root root 13540 Jan 12 00:17 /var/log/secure-20170204
二,用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。
服务器时间同步:
[root@ningjiancheng1 ~]# crontab -l
*/5 * * * * /sbin/ntpdate time.windows.com >/dev/null 2>&1
系统的定时任务分类文件:
/etc/cron.hourly
/etc/cron.daily
/etc/cron.monthly
/etc/cron.weekly
/etc/cron.deny
/etc/crontab系统定时任务的配置文件之一
系统定时任务+logrotate命令 完成对日志的切割/日志轮询
轮询的日志(日志轮询):周期性切割日志
系统的定时任务+logrotate
[root@chensiqi1 ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
5-linux系统下定时任务软件的种类
严格的说,linux系统下的定时任务软件还真不少,例如:at,crontab,anacron
假如:某天晚上需要处理一个任务,仅仅是这一天的晚上,属于突发性的工作任务。要执行at命令,还需要启动一个名为atd的服务才行,在实际工作中,还真没碰到需要用到它的时候。因此,建议大家不要深入研究了,到此我们讲解到这里为止即可。
crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。
要执行crontab这个命令,也需要启动一个服务crond才行,这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。
定时任务依赖的软件(服务)是否能用:
1、查看定时任务当前是否运行
/etc/init.d/crond status
ps -ef|grep crond
2、查看定时任务是否开机启动(crond)
chkconfig |grep crond
1,开机自启动crond服务
[root@ningjiancheng1 ~]# chkconfig --list | grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@ningjiancheng1 ~]#
2,此时此刻服务的状态(查看,开启,关闭)
[root@ningjiancheng1 ~]# /etc/init.d/crond status
crond (pid 1139) is running...
[root@ningjiancheng1 ~]#
/etc/init.d 服务启动命令(脚本)
3,如何查看进程
ps -ef | grep crond
anacron:这个命令主要用于非7*24小时开机的服务器准备的,anacron并不能指定具体时间执行任务工作,而是以天为周期或者在系统每次开机后执行的任务工作。
它会检测服务器停机期间应该执行,但是并没有进行的任务工作,并将该任务执行一遍。
小结:
1,我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令
2,crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略
3,几乎每个服务器都会用到crond服务
4,上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)