Linux基础之任务计划at、batch、crontab
无论服务器是什么操作系统,我们都不能无时无刻的登录到服务器上进行一些操作,那么我们就需要使用任务计划来让Linux系统自动运行一些程序。
Linux系统中有at、batch和crontab任务计划,接下来就看看这三个任务计划是怎么帮助我们实现自动执行程序的吧
一、一次性任务
1、at
常用
at TIME
at>
Ctrl +d:提交任务
at允许使用一套相当复杂的指定时间的方法。他能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。当然也能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的 词语来指定时间。用户还能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 也能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年)。指定的日期必须跟在指定时间的后面。 上面介绍的都是绝对计时法,其实还能够使用相对计时法,这对于安排不久就要执行的命令是很有好处的。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,究竟是几天,还是几小时,等等。 更有一种计时方法就是直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
[root@myb362 scripts]# at now+1min
at> uptime
at> <EOT>
job 1 at 2014-03-28 19:44等待一分钟之后,at会给当前用户发送mail,我使用的root用户,使用mail可以查看。
添加一个明天早上7点执行的任务
[root@myb362 scripts]# at 07:00 tomorrow
at> uptime
at> <EOT>
job 2 at 2014-03-29 07:00显示系统中的任务计划
atq
[root@myb362 scripts]# atq
2 2014-03-29 07:00 a root删除系统中的任务计划
atrm
[root@myb362 scripts]# atq
2 2014-03-29 07:00 a root
[root@myb362 scripts]# atrm 2
[root@myb362 scripts]# atq
[root@myb362 scripts]#2、batch :跟at一样也是定期执行的命令,使用方法也跟at相同,但是不同的是batch不需要指定时间,因为它会自动在系统负载比较低的时候执行(平均负载小于0.8的时候)
二、周期性任务
crontab
crontab配置文件
系统cron:/etc/crontab
用户cron:/var/spool/cron/USERNAME
crontab配置文件的差别
用户cron:6个字段,与系统cron相比,无需指定用户身份
系统cron:在/etc/crontab配置文件中指定
cron配置文件解释
# 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
在配置文件中,我们是可以使用通配符来指定不同的运行时间的
*:相应时间点的所有有效取值
,: 离散取值, 3,18,33,48 * * * * root cat /etc/fstab
/: 定义指定取值范围内的频率, 例如:*/3 * * * * root cat /etc/fstab 17 */3 * * * root cat /etc/fstab
-: 连续取值:17 8-20/3 * * * root cat /etc/fstabcrontab任务计划中,默认最小运行时间为分钟,那么如何以秒为单位执行任务计划呢
方法1:
每隔30秒执行一次脚本
* * * * * /bin/cat /etc/fstab
* * * * * sleep 30 && /bin/cat /etc/fstab方法2:
每隔15秒执行一次脚本
* * * * * for i in 0 1 2; do some_job && sleep 15; done; some_job
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。