前言:
cron 系统调度进程,使用它在每天得非高峰负荷时间段运行作业,或者在一周或一月中得不同时段运行at命令,在特定时间运行一些特殊作业& 使用它在后台运行一个占用时间不长得进程nohup,使用它在后台运行一个命令,即使在用户退出时也不受影响。基于“时间片轮转调度算法”,每个进程都会被分给一个运行的时间片,就拿上面例(4)程序中的父,子进程的运行来说,比如时间片允许的时间段是100毫秒,这个时间是很短很短的,先执行父进程,遇到了sleep( sleep休眠,插入阻塞队列,进程阻塞状态就不会被执行,休眠时间到后,就会插入就绪队列,等待调度程序执行),保存父进程的状态信息,执行子进程,子进程也遇到sleep阻塞,再看父进程还是阻塞状态,此时终端用“ps-aux”命令查看进程状态,可以看到父子进程都是处于中断等待状态。如果它在第二队列中运行一个时间片后仍未完成,再依次将它放入第三队列,……,如此下去,当一个长作业(进程)从第一队列依次降到第n队列后,在第n 队列便采取按时间片轮转的方式运行。
注意:at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了。
1、at命令格式
at?[选项]?[时间] Ctrl?+?D??结束at命令的输入
在使用at命令的时候,一定要保证atd进程的启动。
[root@vms002?/]#?ps?-ef|grep?-v?grep|grep?atd rpcuser????1550??????1??0?6月10?????????00:00:00?/usr/sbin/rpc.statd?--no-notify root???????1552??????1??0?6月10?????????00:00:00?/usr/sbin/atd?-f
2、at命令参数
当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
atq的别名
atrm的别名
显示任务将被执行的时间
打印任务的内容到标准输出
显示版本信息
-q <队列>
使用指定的队列
-f <文件>
从指定文件读入任务而不是从标准输入读入
-t <时间参数>
以时间参数的形式提交要运行的任务
3、时间定义
at允许使用一套相当复杂的指定时间的方法:
● 能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
● 能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
1.3.2 二十四小时计时制与十二小时计时制转换 要求设计电路,能够快速的在二十四小时制和十二小时计时制之间转变,并且在十二小时制状态,设计一定的区分功能,以便于区别是上午还是下午。由于计时器即钟表仅有12小时,只合一昼夜之半,于是以上午下午来辨别,以夜12时(下午24时)正,为0时,夜(上午)1时为1时,以正午12时为12时,下午1时为13时linux命令,下午6时为18时,下午11时为23时。由于计时器即钟表仅有12小时,只合一昼夜之半,于是以上午下午来辨别,以夜12时(下午24时)正,为0时,夜(上午)1时为1时,以正午12时为12时,下午1时为13 时,下午6时为18时linux命令,下午11时为23时。
● 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
● 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days