linux下任务计划详解

一次性任务计划 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关机后未执行的相关计划任务如何处理?

方案:(RHEL5anacron守护进程(anacron:检查过去未执行的计划任务,在开机后一段时间(可自行设定这个时间)如半小时执行这些计划任务)--------RHEL6anacron,已经将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强制写入磁盘文件来显示效果!!!


你可能感兴趣的:(linux,详解,任务计划)