Linux中的计划任务

Linux的计划任务分为两类:

1,一次性执行:

         常用命令:at, batch依赖于atd服务

2,周期性执行:

         常用命令:crontab,依赖于crond服务

 

一次性任务执行:

用法:

#at TIME
at> /bin/sync           输入需要执行的命令或脚本
at> “Ctrl+d”          输入Cry+d提交任务

TIME:的几种格式

                  #at now+3min                                                相对时间

                  #at 11:30                                                 或是绝对时间

                  #at noon, midnight, teatime(4:00pm)      或是模糊时间

                                                                                          man at查看其他详细时间表示方法

 at命令选项:
-m:当at工作完成后,即使没有输出信息,也会以mail通知用户工作已完成
-l:列出当前正在等待执行的任务队列
    #at -l= #atq    
-d:删除尚未执行的任务
    #at -dJOB_ID = atrm JOB_ID  
-f:指定执行对应目录下的脚本
    #at-f /PATH/TO/AT_SCRIPT TIME       指定执行对应目录下的脚本
         此处/PATH/TO/AT_SCRIPT称为at脚本

 

例:at的使用实例

通常在改远程主机ip之前,为避免修改后的新IP不通,导致无法连接,此场景中则可以先执行一个at任务

#at now 10min
at>ifconfig eth0 IP                  ##此IP为目前在使用的正确的IP
 
先发送此at任务,再去改IP,即使改错,10分钟后也会自动恢复。

 at的不同是,batch可以不需要指定时间,自动选择系统空闲时执行。在计划执行某些批处理任务的场合时,可能使用到,使其自己评估选择系统空闲时执行。

 

周期性任务:

周期性任务有两类:

系统类周期性任务/etc/crontab

         用户类周期性任务/var/spool/cron/USERNAME

 

系统cron的定义:

方法:

1、#vim /etc/crontab             此配置文件中添加计划任务
2、#service crond restart        重启crond服务,使刚添加的计划任务生效

 

系统cron的配置文件/etc/crontab7个字段的含义:

#cat/etc/crontab
# 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(第七字段)

 

用户cron的定义:

方法:

#crontab -e [-u USERNAME]

    此命令自动打开编辑器,即可新建任务、修改原有任务、删除原有任务,然后保存即可。此命令编辑文件提供语法检查功能,而通过vim并不会。类似visudo 

保存后的cron文件自动保存在 /var/spool/cron/USERNAME文件中,此文件中定义6个字段,意义同配置文件/etc/crontab中相同,只是去掉user-name段,即与系统cron相比,用户cron无需指定用户身份

 

crontab命令的选项:
-e:打开当前系统的默认文本编辑器,来定义用户cron
-r: 移除配置文件,会删除所有任务;
    (若删除某指定任务,crontab -e打开文件删除对应行即可)
-l: 列出周期性任务
-u USERNAME:管理员以其他用户身份定义crontab,并且会保存对应用户名的目录下
   E.g. #crontab-e -u user1  (所以即可实现root用户管理其他用户的任务)

 

cron配置文件中时间点的段,指定时间时可使用如下通配符:

* :相应时间点的所有有效取值,即意为每
    E.g. 3 4 * * * root cat /etc/fstab    每天4点3分以root用户执行命令cat/etc/fstab
         3 4 * * 5 root cat /etc/fstab    每周五4点3分执行(周和月,通常不同时使用)
, :离散取值  
    E.g. 3,18,33,48 * * * * root cat /etc/fstab 
        表示每小时的第3分钟,18分钟….,即每5分钟执行1次
/ :定义指定取值范围内的频率
    E.g. */3 * * * * root cat/etc/fstab     每3分钟执行一次
     17 */3 * * * root cat /etc/fstab    每3小时的第17分钟执行一次,即实现每3小时执行一次-  :连续取值:
    E.g. 17 8-20/3 * * * root cat /etc/fstab  每天8点到20点每3小时执行一次

 

例:3 18 * * 2,5                    每周执行2次(周二和周五)

         2,328-18/3 * * 1-5         周一到周五,8点到18点每隔3小时,每半小时执行一次

         72 */2 * * root tar -Jcf /backup/etc-`date ‘+%F‘`.tar.xz /etc/*    2天的凌晨27分执行备份一次/etc目录

 

本文出自 “斑马Linux” 博客,请务必保留此出处http://zebralinux.blog.51cto.com/8627088/1548469

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。