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/crontab中7个字段的含义:

#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天的凌晨2点7分执行备份一次/etc目录

Linux中利用crontab创建计划任务

Linux中用crontab例行工作安排

Linux crontab不执行问题排查

Ubuntu使用crontab定时任务

Linux计划任务(at batch crontab anacron)  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/17598.html