设为首页 收藏本站
查看: 690|回复: 0

[经验分享] Linux下计划任务at、crontab与anacron

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2014-5-27 10:11:24 | 显示全部楼层 |阅读模式
未来只做一次                            at          (依赖于atd服务)
未来周期性做                            cron      (依赖于crond服务)
cron补充(开机后执行)                anacron  (依赖于anacron服务)
at:

at 命令被用来在指定时间内调度一次性的任务。
at [-mldv] TIME
选项与参数:
-m :当at的任务完成后,即使没有输出信息,也以 email 通知给使用者
-l :列出目前系统上面的所有该使用者的at任务(同atq)
-d :可以取消一个在 at 任务(同atrm)
-v :可以使用较明显的时间格式列出 at 任务
-c :可以列出后面接的该项任务的内容
=============
at命令的时间格式:
now + 时间 :时间以 minutes、hours、days、或 weeks 为单位
HH:MM :24小时制度,如果时间已过,就会在第二天的这一时间执行
midnight :表示00:00
noon :表示12:00
teatime :表示16:00
=============
[iyunv@rhel6 ~]# at 13:10 //定义一个at任务在13:10执行
at> date >> /tmp/at //将当前时间输入/tmp/at文件
at> echo "at command test" >> /tmp/at
at> uname -r >> /tmp/at
at> <EOT> //另选一行按Ctrl+D退出at命令模式
job 1 at 2012-12-28 13:10
[iyunv@rhel6 ~]# at now + 1 minutes //再定义一个at任务在1分钟后执行
at> date >> /tmp/at
at> echo "at command test again" >> /tmp/at
at> sleep 10
at> date >> /tmp/at
at> <EOT>
job 2 at 2012-12-28 13:10
==================
date命令:
设置时间
[iyunv@teacher init.d]# date
Tue Mar 19 15:20:28 EDT 2013
[iyunv@teacher init.d]# date +%F
2013-03-19
[iyunv@teacher init.d]# date +%Y%m%d
20130319
[iyunv@teacher init.d]# date +%Y%m%d-%M
20130319-21
[iyunv@teacher init.d]# man date
[iyunv@teacher init.d]# date +%F%T
2013-07-2609:51:16
[iyunv@teacher init.d]# date +%F-%T
2013-07-26-09:51:20
[iyunv@teacher init.d]# date +%F_%T
2013-07-26_09:51:52
[iyunv@teacher init.d]#
[iyunv@rhel6 ~]# date
Fri Dec 28 13:09:09 CST 2012
============
[iyunv@rhel6 ~]# atq //显示系统中所有的at任务
2 2012-12-28 13:10 a root
1 2012-12-28 13:10 a root
[iyunv@rhel6 ~]# cat /tmp/at
Fri Dec 28 13:10:00 CST 2012
Fri Dec 28 13:10:00 CST 2012
at command test
at command test again
2.6.32-220.el6.x86_64
Fri Dec 28 13:10:10 CST 2012 //对比两个时间可见at任务是按顺序执行命令的
========================
cron
任务调度的crond常驻命令
crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置
Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
文件                                                                            含义
/etc/cron.deny                                           该文件中所列的用户不允许使用Crontab命令
/etc/cron.allow                                       该文件中所列的用户允许使用Crontab命令
/var/spool/cron/                                                是所有用户的crontab文件
/var/spool/cron/crontabs                Crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:
=====================================================
参数名称                     含义                                                            示例
-l                    显示用户的Crontab文件的内容                                         crontabl –l
-i                    删除用户的Crontab文件前给提示                                      crontabl -ri
-r                   从Crontab目录中删除用户的Crontab文件                           crontabl -r
-e                  编辑用户的Crontab文件                                                    crontabl -e
=====================================================
用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * *
其时间段的含义:
段                                       含义                            取值范围
第一段                               代表分钟                           0—59
第二段                               代表小时                           0—23
第三段                               代表日期                           1—31
第四段                               代表月份                           1—12
第五段                   代表星期几,0代表星期日               0—6
==================================================
名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
餐数 :
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表
时程表的格式如下 :
f1 f2 f3 f4 f5 program  
  
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 7 * * * /bin/ls  
  
在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup  
  
周一到周五每天下午 5:00 寄一封信给 gaun@adair.name :
0 17 * * 1-5 mail -s "hi" guan@adair.name  /dev/null 2>&1 即可
例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’
===========================
crontab文件的一些例子:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启lighttpd
anacron
待更新


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-19738-1-1.html 上篇帖子: 怎么样在CentOS/Redhat中安装Varnish 3 下篇帖子: wireshark抓取某IP/端口网络包
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表