手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

Linux中的计划任务

[日期:2014-09-05] 来源:Linux社区  作者:zebralinux [字体: ]

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创建计划任务 http://www.linuxidc.com//Linux/2013-06/86401.htm

Linux中用crontab例行工作安排 http://www.linuxidc.com//Linux/2013-06/85441.htm

Linux crontab不执行问题排查 http://www.linuxidc.com//Linux/2013-06/85432.htm

Ubuntu使用crontab定时任务 http://www.linuxidc.com//Linux/2013-05/84770.htm

Linux计划任务(at batch crontab anacron) http://www.linuxidc.com//Linux/2013-03/81584.htm 

本文永久更新链接地址http://www.linuxidc.com/Linux/2014-09/106216.htm

linux
相关资讯       Linux计划任务 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款