一次性任务计划 用at(指定时间执行任务,需开启atd服务) batch(不指定执行时间,在系统空闲时/系统负载较低时自动执行任务)等命令来实现
周期性任务计划 cron(需启动crond服务)
at介绍
at now+3min|11:30|noon,midnight,teatime(更多时间指定格式见man at页) 回车 在>提示符下可输入多行命令,用ctrl+d提交任务
atq 查看当前等待执行的atd的命令队列,或 at -l
at会将执行结果(即执行输出)以邮件方式发给任务发起用户,该用户可以在系统上用mail命令查看这些邮件!
atrm 作业号/at -d 作业号 ---------删除任务
执行at命令脚本文件语法格式: at -f 脚本文件名 指定执行时间
cron介绍
cron的服务/守护进程是crond
cron的配置文件:
系统配置文件:/etc/crontab:以在此配置文件中指定的用户身份来运行对应的计划任务,这里的PATH变量指定的目录很有限,建议用绝对路径来指定命令!
用户配置文件:/var/spool/$USERNAME以对应的用户来运行此配置文件中指定的计划任务在此配置文件中,不需要指定用户名。在用户未登录情况下,这里的PATH变量可能未设定,建议用绝对路径来指定命令!另外如果执行的任务是脚本,可自行在脚本中设置PATH变量。
详解系统配置文件文件格式:/etc/crontab 7个字段
分钟 小时 dayofmonth month dayofweek username cmd
0-59 0-23 1-31 1-12/Jan,Feb.. 0-7,0=7
注:dayofmonth dayofweek 2项不能结合使用
cron配置文件中4个通配符如下:
*号表示通配相应时间点的每一个有效取值
,号表示离散取值,例(分钟)3,33 表示3分,33分执行
/号定义指定取值范围内运行频率;例(分钟)*/3表示每3分钟执行一次
-号表示连续取值,例(小时)8-20/3表示8点到20点,每3小时执行一次
详解用户配置文件文件格式 6个字段,与/etc/crontab比较无需指定用户名username:
/var/spool/$USERNAME,用户可以以命令crontab �Ce来编辑此文件,也可以用vi命令直接编辑此文件,但与命令crontab �Ce不同的是vi命令不会检测配置文件中语法错误,而前者会。
*)crontab会将执行结果(即执行输出)以邮件方式发给任务发起用户(如果任务无输出,则不会发邮件出来),该用户可以在系统上用mail命令查看这些邮件!
*)拒收crontab邮件的方法
1.crontab �Ce 第一行写MAILTO=’’(即不发给任何人)
2 .crontab �Ce在任务的命令后加&>/dev/null即可
crontab其他选项详解
-r 删除当前用户所有cron任务,如果只想删除部分任务,只能用命令crontab�Ce来实现
-l 列出当前用户所有cron任务
-u username �Ce|-r|-l 以其他用户身份来编辑/删除/列出cron任务,需root权限
注意:在cron配置文件中%号要加转义符\或者强引用’%’才能正常使用,例date +’%F’
*crontab运行前提
crond服务必须运行。
问题:PC机上运行crond,但如果pc关机后未执行的相关计划任务如何处理?
方案:(RHEL5)anacron守护进程(anacron:检查过去未执行的计划任务,在开机后一段时间(可自行设定这个时间)如半小时执行这些计划任务)--------RHEL6无anacron,已经将anacron功能整合进cron中。
问题:如何以秒为单位执行计划任务?
方法一:第一行* * * * * cmd
第二行* * * * * sleep 30;cmd
方法二:* * * * * for i in 0 1 ;do cmd &;sleep 15;done;cmd
注:监控cpu利用率,可以以每一秒执行一次任务;可以利用sleep支持毫秒为单位的特性;使用time命令可以测试cmd的运行时间;time cmd
****注意:crontab中任务的输出(或者说从外网wget下载到本地的流量为一个文本到本地磁盘上某个文件中)可能会被延迟加载到磁盘上,也就是说是异步的。而直接在shell交互界面下执行这个任务可能可以实时的将输出/网络流量存储到磁盘上!*可以使用sync强制写入磁盘文件来显示效果!!!