码迷,mamicode.com
首页 > 其他好文 > 详细

第十三章 自动执行作业

时间:2015-09-26 14:36:18      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:

一、控制前后台作业

        jobs:列出当前环境的后台或暂停的作业

        fg、bg、kill:控制指定的作业,作业用“%+作业号”来指定

        nohup:运行一个即便账号logout都不会被kill,而是被init进程接管的作业

二、at命令——预指定单独一次的作业执行

#at [ -c | -k | -s -q Quene] [ -m ] [ -f File ] { -t Date | Time [ Day ] [ increment ] }

1)三种运行at命令的格式

        a)#at Time

                command1

                command2

                ... ...

                ctrl+d(结束命令输入)

             #

        b)#echo command| at Time(通过管道符把命令告诉给at)

        c)#at -f File Time(指定Time时刻执行文件File中的命令)

2)at中可是识别的Time的时间格式

        a)Date参数的格式——[ [ CC ] YY ] MMDDhhmm [ .SS ]

                CC:世纪;YY:年份的后两个数字;MM:一年的月份(01~12);DD:一月中的天(01~31);hh:一天中的小时(00~23);mm:一小时中的分钟(00~59);.SS:一分钟的秒(00~59)

                CC和YY是可选的,若YY给定而CC没有给定,那么有如下规则:(1)、99>=YY>=70,则CC=19;37>=YY>=00,则CC=20。

                SS默认是00

        b)Time [ Day ] [ increment ]格式

                Time参数为一个数字跟一个后缀,如果Time是两位数的数字,那么at会把它当成小时,四位数的则会当成小时和分钟,若四位数用冒号(:)分开,则意思为hh:mm。后缀可以是am、pm、zulu,zulu是格林威治时间。

                Time也有一些特殊的参数形式如下:noon、midnight、now、A(表示AM)、P(表示PM)、N(表示noon)、M(表示midnight)

                Time后边可选跟一个Day参数:用来表示一个月份名字和日数字(可以在逗号之前带一个年),或者表示为一个星期的某一天。默认是月份之后是日,如果Day是2或多个字符,则表示为星期的某一天,例如Sunday;如果是3个字符一般表示是月份,例如Jun。如果没有给出日期,那么Day默认把今天或明天当成一个默认参数值(Time时间没过Day就只今天,如果时间过了,就是明天)。

                参数increment用来改变时间和日期的参数,可是是一个加号(+)跟一个数字和单位。格式为“+n Units”,其中Units可以是 minute[s]、hour[s]、day[s]、week[s]、mouth[s]、year[s]等

                以下均为正确的表示形式:

                #at 0820    ---->每天上午8点20执行作业

                #at 0820 am    ---->每天上午8点20执行作业

                #at 08:20 am July 26    ---->在7月26日上午8点20执行作业

                #at 7 pm Monday    ---->星期一下午7点执行作业

                #at now next week    ---->下个星期的这个时候执行作业

                #at now +38 days    ---->在38天后的这个时候执行作业

                #at noon tomorrow    ---->在明天中午执行作业

                #at 3:00 pm Friday next week    ---->在下个星期五的下午3点执行作业

技术分享

最后一行是at返回的作业号和执行时间日期。作业号由三部分组成:root.996455160.a——<用户名>.<作业标识>.<作业类型>,作业好由系统按顺序分配,与进程ID无关。

c)显示/删除at作业

#at -l [ -o ] [ Job | -q Queue ]

#at -n [ User ]

#at -r [ -F ] [ -i ] Job

#at -r [ -F ] [ -i ] -u User

3)控制用户使用at命令

        由/var/adm/cron/at.allow/var/adm/cron/at/deny这两个文件共同控制哪些用户可以使用at命令和batch命令哪些用户不可以,只有root用户可以创建和编辑这些文件。

        如果/var/adm/cron/at.allow文件存在,则只有出现在这个文件中的用户才有权利执行at命令,如果/var/adm/cron/at/deny文件存在,那么凡是没有出现在这个中的用户都有权利执行at命令

        一下任何一种情况,用户都不能使用at命令:

            a)allow和deny文件都不存在

            b)allow文件为空

            c)deny文件存在,但是用户名记录其中

三、batch命令

        使用at命令,那么at作业到了指定的执行之间,会不顾当时的系统负载,直接开始执行作业,如果预先要执行的作业占用大量的系统时间,那么不妨使用batch命令。batch命令从标准输入读入命令,向系统提交一批作业,然后系统把作业放在一个队列,视系统负载情况找机会开始执行。单纯的batch命令等同于at -b -m now。

        如果batch或at -b 命令不带Time,那么作业立即在队列中排队并且一旦系统负载允许就开始执行,如果带上Time参数,则在该时间之后,系统负载允许时运行作业。

四、cron——周期性自动执行作业

1)cron进程

        cron后台服务进程由init进程启动。它是一个Daemon进程,在系统启动时,只需要启动一次,启动后,会检查crontab文件,当用crontab工具修改了这个文件以后,就会向crontab进程发送一个crontab文件已改变的消息,然后cron进程就会重新读取crontab文件

        cron进程按照crontab文件中的记录内容执行命令,除非重定向了cron作业的标准输入和错误输出,cron进程会将标准输出和错误输出以邮件的形式发送给登录用户。如果在crontab文件中指定了一个错误的记录,那么cron进程不会执行那个作业。可以用crontab -e来编辑crontab文件

2)crontab文件

        a)crontab文件记录着由cron进程在指定日期,时间执行的命令信息,cron机制将为每一位用户建立一个crontab文件,并且以用户名作为crontab文件的文件名,这些crontab文件位于/var/spool/cron/crontabs/目录下。

技术分享

        b)crontab文件记录的格式

minute hour day_month month weekday command

        其中:

            minute:00~59

            hour:00~23

            day_month:1~31

            month:1~12

            weekday:0~6,0为星期天

            command:shell命令

        特殊说明:

            (1):两个数字用“-”连接,表示数字之内的所有值,eg:“3-6”表示3、4、5、6

            (2):一个单独数字,表示范围,eg:month字段写7,表示在7月份

            (3):逗号分开的数字清单,表示每个数字指定的值的集合,eg:“3,6”表示3、6

            (4):一个*,表示所有的合法值

            (5):日期中的天可以用两个字段来确定,分别是Day_month和Weekday,如果两个字段都有指定数字,则表示当日期符合这两个字段中的任意一个指定的日期,命令都执行。

            (6):command可以是单个命令,也可以是一个多个命令组成的shell脚本。如果该字符串包含了“%”(除非使用反斜杠“\”,即“\%”),则cron进程认为%之前的是所有字符是命令,%后边的所有字符作为命令的标准输入部分。

            (7):在crontab文件中不能出现空白行,否则cron进程会出错,在该文件中,凡是出现#的行都是注释行。

            (8):/var/adm/cron/cron.allow/var/adm/cron/cron.deny这两个文件的控制作用对cron进程来说也适用。具体作用方式可以参考at命令下的两个控制文件的说明。

c)cron日志

            cron进程在/var/adm/cron/log文件中记录它所有的活动。通过查询该日志可以帮助用户跟踪解决令人费解的,与调试作业有关的问题。

            cron运行作业时会在/tmp目录中创建一些临时的文件,这些临时文件是以“crout”字符串开头的,当作业完成以后,这些文件就会被自动删除,如果这些文件仍然存在,则说明cron进程没有成功地运行这个作业,作业可能出现了问题。

第十三章 自动执行作业

标签:

原文地址:http://www.cnblogs.com/lqdflying/p/4840649.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!