Linux之定时任务crontab(四)

综述:

       Linux 系统则是由 cron (crond) 这个系统服务来控制的,Linux 系统上面原本就有非常多的计划性(周期)工作(有哪些呢?),因此这个系统服务是默认启动的。另外由于使用者自己也可以设置计划任务,所以 Linux 系统也提供了使用者控制计划任务的命令 crontab 命令。

=================分割线================================

crontab命令

        作用:是用于设置、移除、显示相关为crond守护进程服务的周期性任务。

        原理:Linux系统默认会安装crond守护进程, 并在开机的时候自动启动。每个用户属于自己的crontab,并且将任务保存在/var/spool/cron目录下的文件中(用户级别),任务的保存形式以相应的用户名作为文件名

Linux下的任务调度分为两类(级别):系统任务调度和用户任务调度。

  1. 系统任务调度:--->默认是root有权限修改!

          功能:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。

          配置文件:/etc/crontab

          配置文件的内容

[root@localhost ~]# cat /etc/crontab 
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 
# run-parts

命令的格式:分 时 天 月 星期 用户名 命令------>七个字段!

补充:crond读取配置文件(系统级别)的其他位置:/etc/cron.d/*;

注意:/etc/cron.d/目录的内容!--->特点:是crontab的配置脚本文件

10:18:24][root@foundation10:~]# ls -l /etc/cron.d/

-rw-r--r--. 1 root root 128 Feb 23  2016 0hourly
-rw-r--r--. 1 root root 108 Sep 27  2016 raid-check
-rw-------. 1 root root 235 Jun  1  2016 sysstat

举例:0hourly的内容

# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly

run-parts 命令的用法及原理

run-parts内容:很简单的一个shell脚本,就是遍历目标文件夹,执行第一层目录下的可执行权限的文件,通常是shell脚本!

etc下的其他调度文件的目录:

   1. cron.daily    -------->cron的服务
   2. cron.hourly   -------->anacron的服务
   3. cron.monthly  -------->anacron的服务
   4. cron.weekly   -------->anacron的服务

说明:关于anacron稍后补充!

计划任务的特殊格式:

(1)星号(*)可以用来代表所有有效的值。譬如,月份值中的星号意味着在满足其它制约条件后每月都执行该命令。
(2)整数间的短线(-)指定一个连续整数范围。譬如,1-4 意味着整数 1、2、3、4。
(3)用逗号(,)隔开的一系列值指定一个列表。譬如,3, 4, 6, 8 标明这四个指定的整数。
(4)正斜线(/)可以用来指定间隔频率。在范围后(或*后)加上 /<integer> 意味着在范围内可以跳过 integer。譬如,0-59/2(*/2) 可以用来在分钟字段定义每两分钟。
(5)开头为井号(#)的行是注释,不会被处理。

===================================

    2.用户(级别)任务调度

        用户定期要执行的工作,比如用户数据备份定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中,其文件名与用户名一致,使用者权限文件如下:

  • /etc/cron.deny 该文件中所列用户不允许使用crontab命令--->默认存在且为空
  • /etc/cron.allow 该文件中所列用户允许使用crontab命令--->缺性不存在,但优先级高!
  • /var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名--->注意命名的特点权限和属性(特殊)!

引申

      [09:23:20][kiosk@foundation10:~/Desktop]$ ls -l /usr/bin/crontab 

了解特殊权限:-rwsr-xr-x. 1 root root 57552 2月  23 2016 /usr/bin/crontab

crontab的使用方法

  (1)常用选项

-e:编辑该用户的cron来设置--->每个用户都只有一个文件存在,在/var/spool/cron/目录中!vi的:wq保存
-l:查看该用户的所有任务; 
-r:删除该用户的全部任务--->如果删除一项任务的话,必须用"crontab -e"去编辑! 
-u<用户名称>:指定要设定任务的用户名称;只有root用户来指定,帮助用户删除或建立crontab的计划任务!

(2)crond用户级别的任务格式书写

注意:与系统级别格式的区别?--->由于已经是当前用户的任务计划,所以无需指定username

补充:command也可以是脚本文件----->但必须有rx的权限,最好是全路径----->/home/username/test.sh.

----------------------------------------------------------------------------------------------

cron每小时执行的原理(读取的配置文件):

/etc/cron.d/0hourly(文件)------->内容-------> /etc/cron.hourly/*(目录下的执行文件)----->其中之一(0anacron文件)

猜你喜欢

转载自blog.csdn.net/wzj_110/article/details/86547046