CentOS Linux 系统计划任务简单介绍

CentOS  Linux 系统计划任务简单介绍

§·linux 系统计划任务

※·linuxCentos计划任务的程序为:cron

周期性任务计划:cron

相关的程序包:

cronie: 主程序包,提供crond守护进程及相关辅助工具

cronie-anacroncronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务

crontabs:包含CentOS提供系统维护任务

 

查看系统计划任务程序包

[root@centos68 grub]# rpm -qa |  grep cron
cronie-1.4.4-15.el6_7.1.x86_64
crontabs-1.10-33.el6.noarch
cronie-anacron-1.4.4-15.el6_7.1.x86_64
 
[root@centos68 grub]# rpm -ql cronie-1.4.4-15.el6_7.1.x86_64  #cron主程序包,提供crond的守护进程
/etc/cron.d
/etc/cron.d/0hourly
/etc/cron.deny
/etc/pam.d/crond
/etc/rc.d/init.d/crond
/etc/sysconfig/crond
/usr/bin/crontab
/usr/sbin/crond
/usr/share/doc/cronie-1.4.4
/usr/share/doc/cronie-1.4.4/AUTHORS
/usr/share/doc/cronie-1.4.4/COPYING
/usr/share/doc/cronie-1.4.4/ChangeLog
/usr/share/doc/cronie-1.4.4/INSTALL
/usr/share/doc/cronie-1.4.4/README
/usr/share/man/man1/crontab.1.gz
/usr/share/man/man5/crontab.5.gz
/usr/share/man/man8/cron.8.gz
/usr/share/man/man8/crond.8.gz
/var/spool/cron
 
[root@centos68 grub]# rpm  -ql  crontabs-1.10-33.el6.noarch  #系统计划任务使用程序包
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab
/usr/bin/run-parts
/usr/share/man/man4/crontabs.4.gz
 
[root@centos68 grub]# rpm -ql cronie-anacron-1.4.4-15.el6_7.1.x86_64   #anacron程序包,服务器很少使用
/etc/anacrontab
/etc/cron.hourly/0anacron
/usr/sbin/anacron
/usr/share/man/man5/anacrontab.5.gz
/usr/share/man/man8/anacron.8.gz
/var/spool/anacron
/var/spool/anacron/cron.daily
/var/spool/anacron/cron.monthly
/var/spool/anacron/cron.weekly
[root@centos68 grub]#

 ※·分析 linux中Centos系统周期性任务分类

[root@centos68 grub]# rpm  -ql  crontabs-1.10-33.el6.noarch  #系统计划任务使用程序包
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab   #系统计划任务的配置文件
/usr/bin/run-parts
/usr/share/man/man4/crontabs.4.gz

 ※·分析几个定时计划目录文件: 天计划,小时计划,月计划,周计划

[root@centos68 etc]# ls /etc/cron.daily/    #天计划任务目录下的文件
cups  logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatch
[root@centos68 etc]# ls /etc/cron.hourly/   #小时计划任务目录下文件
0anacron
[root@centos68 etc]# ls /etc/cron.monthly/  #月计划任务目录下的文件
readahead-monthly.cron
[root@centos68 etc]# ls /etc/cron.weekly/

 ※·Linux 系统常见的计划任务有以下几种

有兴趣可以看看研究下 /etc/cron.daily/ 各个执行脚本的文件内容

◎·进行登录档的轮替 (log rotate)

Linux 会主动的将系统所发生的各种信息都记录下来,这就是登录档。 由于系统会一直记录登录信息,所以登录文件将会越来越大!我们知道大型文件不但占容量还会造成读写效能的困扰, 因此适时的将登录文件数据挪一挪,让旧的数据与新的数据分别存放,则比较可以有效的记录登录信息。这就是 logrotate 的任务!这也是系统必要的例行任务;

◎·登录文件分析 logwatch 的任务:

如果系统发生了软件问题、硬件错误、资安问题等,绝大部分的错误信息都会被记录到登录文件中, 因此

系统管理员的重要任务之一就是分析登录档。但你不可能手动透过 vim 等软件去检视登录文件,因为数据

太复杂了! 我们的 CentOS 提供了一只程序『 logwatch 』来主动分析登录信息,所以你会发现,你的 root

老是会收到标题为 logwatch 的信件,那是正常的!你最好也能够看看该信件的内容喔!

◎·建立 locate 的数据库:

我们谈到的 locate 指令时, 我们知道该指令是透过已经存在的文件名数据库来进行系统上文件名的查询。我 们的文件名数据库是放置到 /var/lib/mlocate/ 中。 问题是,这个数据库怎么会自动更新啊?嘿嘿!这就是系 统的例行性工作所产生的效果啦!系统会主动的进行 updatedb 喔!

◎·man page 查询数据库的建立:

locate 数据库类似的,可提供快速查询的 man page db 也是个数据库,但如果要使用 man page 数据库

时,就得要执行 mandb 才能够建立好啊! 而这个 man page 数据库也是透过系统的例行性工作排程来自

动执行的哩!

◎·RPM 软件登录文件的建立:

RPM (第二十二章) 是一种软件管理的机制。由于系统可能会常常变更软件, 包括软件的新安装、非经常

性更新等,都会造成软件文件名的差异。为了方便未来追踪,系统也帮我们将文件名作个排序的记录呢!

时候系统也会透过排程来帮忙 RPM 数据库的重新建置喔!

◎·清楚临时文件

某些软件在运作中会产生一些暂存档,但是当这个软件关闭时,这些暂存盘可能并不会主动的被移除。

些暂存盘则有时间性,如果超过一段时间后,这个暂存盘就没有效用了,此时移除这些暂存盘就是一件重

要的工作! 否则磁盘容量会被耗光。系统透过例行性工作排程执行名为 tmpwatch 的指令来删除这些暂存

档呢!

◎·与网络服务有关的分析行为:

如果你有安装类似 WWW 服务器软件 (一个名为 apache 的软件),那么你的 Linux 系统通常就会主动的

分析该软件的登录文件。 同时某些凭证与认证的网络信息是否过期的问题,我们的 Linux 系统也会很亲和

的帮你进行自动检查!

※· Linux 系统计划任务的大概执行流程

◎·crond 服务读取配置文件的位置:

◎·一般来说,crond 预设有三个地方会有执行脚本配置文件,他们分别是:

· /etc/crontab     #crontab 系统计划任务的配置文件

· /etc/cron.d/*    #可以把每一个系统计划任务放在该目录下,系统会自动定时检查该目录下的脚本

· /var/spool/cron/* #linux用户的计划任务配置文件存放地

◎·还有几个重要目录:

/etc/cron.daily      #系统定时每天执行一次,不需要在文件中定义时间,只需要写上脚本内容即可。

/etc/cron.hourly #系统定时小时执行一次,不需要在文件中定义时间,只需要写上脚本内容即可。

/etc/cron.monthly #系统定时每月执行一次,不需要在文件中定义时间,只需要写上脚本内容即可。

/etc/cron.weekly #系统定时每周执行一次,不需要在文件中定义时间,只需要写上脚本内容即可。

◎·crontab系统计划任务文件格式:

[root@centos68 cron.daily]# cat /etc/crontab 
#定义各种系统环境,注意,在文件写的命令建议使用绝对路径,由于脚本申明的PATH变量不一定是系统的PATH所有的PATH变量。
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
 
# For details see man 4 crontabs
 
# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
*/2  *  *  *  *   root   /root/crontabhelloworld.sh      #系统计划任务需要填写用户名的。

◎·cron.d/目录下系统计划任务文件格式:

cron.d/的目录下都是独立的文件,所以我们的定义的计划任务直接写在一个文件中即可,内容如下:

[root@centos68 cron.d]# cat  crondhelloworld.sh    #存放在/etc/cron.d/目录下的文件 内容为如下
*/2   *   *   *  *  root  /root/crondhelloworld.sh  #真正脚本文件放置与 /root/文件目录下
[root@centos68 cron.d]# pwd
/etc/cron.d
[root@centos68 cron.d]# 
 
[root@centos68 cron.d]# ll   #存放在/etc/cron.d/的文件属性记得一定要是普通文件
total 16
-rw-r--r--. 1 root root 113 Nov 10  2015 0hourly
-rw-r--r--. 1 root root  51 Sep  8 09:40 crondhelloworld.sh
-rw-------. 1 root root 108 Dec 11  2015 raid-check
-rw-------. 1 root root 235 May 11 10:02 sysstat
[root@centos68 cron.d]#

◎·cron系统定义好的计划任务文件格式:(最小貌似为小时任务)

[root@centos68 cron.hourly]# ll  #在/etc/cron.hourly/定义的文件都是可执行权限的文件,内容直接为脚本内容即可
total 8
-rwxr-xr-x. 1 root root 409 Nov 10  2015 0anacron
-rwxr-xr-x. 1 root root  51 Sep  8 09:58 cronhour.sh
[root@centos68 cron.hourly]# cat cronhour.sh   #查看其文件内容
#!/bin/bash
 
echo "$0  hello  word..............."
[root@centos68 cron.hourly]# pwd
/etc/cron.hourly
[root@centos68 cron.hourly]#

◎·验证以上三种情况定义的系统计划任务:

由于我使用了 echo 命令,所以任务每次执行,我都会收到邮件:

[root@centos68 cron.hourly]# mail
U 37 Cron Daemon           Thu Sep  8 10:06  23/766   "Cron <root@centos68>   run-parts /etc/cron.hourly
 U 38 Cron Daemon           Thu Sep  8 10:06  24/788   "Cron <root@centos68>  /root/crontabhelloworld.sh"
 U 39 Cron Daemon           Thu Sep  8 10:08  23/766   "Cron <root@centos68>  /root/crondhelloworld.sh"
 U 40 Cron Daemon           Thu Sep  8 10:08  24/788   "Cron <root@centos68>  /root/crontabhelloworld.sh"
 U 41 Cron Daemon           Thu Sep  8 10:10  24/788   "Cron <root@centos68>  /root/crontabhelloworld.sh"
 U 42 Cron Daemon           Thu Sep  8 10:10  23/766   "Cron <root@centos68>  /root/crondhelloworld.sh"

·Centos计划任务日志查询(/var/log/cron)

root@centos68 cron.hourly]# less  /var/log/cron

Sep  8 09:40:01 centos68 CROND[4813]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:41:01 centos68 crond[2572]: (root) BAD FILE MODE (/etc/cron.d/crondhelloworld.sh) 
#定义的系统任务有语法错误
Sep  8 09:42:01 centos68 CROND[4830]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:44:01 centos68 CROND[4842]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:46:01 centos68 CROND[4857]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:48:02 centos68 CROND[4885]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:48:02 centos68 CROND[4884]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:49:02 centos68 anacron[4606]: Job `cron.daily' started     
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4898]: starting cups
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4906]: finished cups
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4898]: starting logrotate
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4913]: finished logrotate
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4898]: starting makewhatis.cron
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[5079]: finished makewhatis.cron
Sep  8 09:49:02 centos68 run-parts(/etc/cron.daily)[4898]: starting mlocate.cron
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[5090]: finished mlocate.cron
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[4898]: starting prelink
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[5102]: finished prelink
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[4898]: starting readahead.cron
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[5114]: finished readahead.cron
Sep  8 09:49:05 centos68 run-parts(/etc/cron.daily)[4898]: starting tmpwatch
Sep  8 09:49:06 centos68 run-parts(/etc/cron.daily)[5152]: finished tmpwatch
Sep  8 09:49:06 centos68 anacron[4606]: Job `cron.daily' terminated
Sep  8 09:49:06 centos68 anacron[4606]: Normal exit (1 job run)
Sep  8 09:50:01 centos68 CROND[5161]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:50:01 centos68 CROND[5163]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  8 09:50:01 centos68 CROND[5162]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:52:01 centos68 CROND[5181]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:52:01 centos68 CROND[5182]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:54:01 centos68 CROND[5199]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:54:01 centos68 CROND[5200]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:56:01 centos68 CROND[5217]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:56:01 centos68 CROND[5218]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 09:58:01 centos68 CROND[5236]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 09:58:01 centos68 CROND[5237]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:00:01 centos68 CROND[5263]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:00:01 centos68 CROND[5264]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:00:01 centos68 CROND[5265]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  8 10:01:01 centos68 CROND[5287]: (root) CMD (run-parts /etc/cron.hourly)
Sep  8 10:01:01 centos68 run-parts(/etc/cron.hourly)[5287]: starting 0anacron   #系统执行的每小时任务
Sep  8 10:01:01 centos68 run-parts(/etc/cron.hourly)[5296]: finished 0anacron
Sep  8 10:01:01 centos68 run-parts(/etc/cron.hourly)[5287]: starting cronhour.sh
Sep  8 10:01:01 centos68 run-parts(/etc/cron.hourly)[5303]: finished cronhour.sh
Sep  8 10:02:01 centos68 CROND[5310]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:02:01 centos68 CROND[5311]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:04:01 centos68 CROND[5331]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:04:01 centos68 CROND[5332]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:06:01 centos68 CROND[5353]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:06:01 centos68 CROND[5352]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:08:02 centos68 CROND[6055]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:08:02 centos68 CROND[6056]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:10:01 centos68 CROND[6106]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Sep  8 10:10:01 centos68 CROND[6107]: (root) CMD ( /root/crontabhelloworld.sh)  #定义在crontab中的计划任务
Sep  8 10:10:01 centos68 CROND[6105]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:12:01 centos68 CROND[6142]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:12:01 centos68 CROND[6141]: (root) CMD ( /root/crontabhelloworld.sh)
Sep  8 10:14:01 centos68 CROND[6171]: (root) CMD ( /root/crondhelloworld.sh)
Sep  8 10:14:01 centos68 CROND[6170]: (root) CMD ( /root/crontabhelloworld.sh)

原创文章,作者:linux_root,如若转载,请注明出处:http://www.178linux.com/44577

(0)
linux_rootlinux_root
上一篇 2016-09-08
下一篇 2016-09-08

相关推荐

  • 第三周作业

    1、列出当前系统上所有已登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d ' ' -f 1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 ~]# la…

    Linux干货 2016-12-19
  • 0805随堂练习

    文本处理练习: 1.找出本机ip地址  [root@localhost ~]# ifconfig |head -2 |tail -1 |tr -s ' ' ':' |cut -d: -f3  10.1.252.221 2.查看本机分区最大的利用率  [root@localhost ~]# …

    Linux干货 2016-08-07
  • 马哥教育网络班21期-第五周课程练习

    1、显示/boot/grub/grub.conf中以至少一个空白字符开头的行; grep ^[[:space:]] /boot/grub/grub.conf 2、显示/etc/rc.d/rc.sysinit文件中以#开头,后面跟至少一个空白字符,而后又有至少一个非空白字符的行; egrep "^#[[:space:]]{1,}[[:alnum:]]…

    Linux干货 2016-08-08
  • 文件、目录练习

    将/etc/issue文件的内容转换为大写保存到/tmp/issue.out文件中: 将当前系统登录用户信息转换为大写后保存至/tmp/who.out文件中: 将/root/下文件列表,显示成一行,文件名之间用空格隔开: file1文件的内容为“1 2 3 4 5 6 7 8 9 10”计算出所有数字的总和: 处理字符串“xt.,| 1 jr#!$mn 2 …

    Linux干货 2016-08-05
  • 编译安装nginx并实现反向代理负载均衡和缓存功能

    一、编译安装nginx 1、下载 [root@ns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2、解压 [root@ns1 ~]# tar xf nginx-1.10.0.tar.gz [root@ns1 ~]…

    Linux干货 2016-05-25
  • linux时间设置、screen使用、命令分类、hash作用、命令引用及history命令

    一、 生产环境发现一台服务器系统时间产生偏差,造成服务异常 解决方法             a、 如果服务器硬件时间准备的话,可使用命令:~#] hwclock -s              将硬件时钟同步到系统 &…

    Linux干货 2016-08-02