1、at--指定系统在某一时间,执行任务
1.1、服务程序 atd
1.2、at命令一般格式 at [-mldv] time
1.3、配置用户能否使用at /etc/at.deny 或者 /etc/at.allow
at.deny at.allow 强烈建议二选一 系统默认 at.deny
1.4、atq 查询计划任务
1.5、atrm 删除计划任务
atrm n (n为job序列号)
1.6、batch CPU工作负载小于0.8时才执行计划任务.
batch 实质也是at命令, 调用at命令来执行计划任务,会在执行任务前检测CPU负载,如果负载超过0.8任务不执行.
2、Cron 周期性执行任务
2.1、服务程序 crond
2.2、cron执行方式
cron(d)服务每分钟去读取一次 /etc/crontab文档以及 /var/spool/cron下的所有文档,匹配时间然后进行对匹配的命令进行执行。
原因:cron的最小精度是分钟,所有每分钟扫描一次
注意:有些系统在修改/etc/crontab 文件后,计划任务不会立即生效,需要重启下crond服务(命令:/etc/init.d/crond restart)。
原因:有些系统会把/etccrontab 加载到内存,每次只扫描内存里/etc/crontab 的内容,重启crond服务 其重新把/etc/crontab的内容加载至内存。
原因:cron的最小精度是分钟,所有每分钟扫描一次
注意:有些系统在修改/etc/crontab 文件后,计划任务不会立即生效,需要重启下crond服务(命令:/etc/init.d/crond restart)。
原因:有些系统会把/etccrontab 加载到内存,每次只扫描内存里/etc/crontab 的内容,重启crond服务 其重新把/etc/crontab的内容加载至内存。
2.3、crontab -e编辑计划任务
2.4、配置用户是否能用cron 使用 /etc/cron.deny 或者 /etc/cron.allow
cron.deny cron.allow 二选一,系统默认cron.deny
2.5、crontab 命令
corntab [-u username] [-l|-r|-e]:
u:指定执行的用户,root才可以使用该参数,也就是root 可以帮别的用户编辑以及删除计划任务.
r:删除计划任务,-r 要慎用, -r会删除用户下所有的计划任务,如果想删除某一条计划任务,请使用-e.
e:编辑任务计划,添加删除修改计划任务.
u:指定执行的用户,root才可以使用该参数,也就是root 可以帮别的用户编辑以及删除计划任务.
r:删除计划任务,-r 要慎用, -r会删除用户下所有的计划任务,如果想删除某一条计划任务,请使用-e.
e:编辑任务计划,添加删除修改计划任务.
2.6、cron 计划任务格式
crontab -e 进入当前用户计划任务编辑(编辑器使用vi接口)
此时会在/var/spool/cron 目录下创建一个跟当前用户名一样的文件名,
该文件名将记录当前用户的cron计划任务.
格式:
代表意义: 分钟 小时 日期 月份 周 指令
取数范围: 0~59 0~23 1~31 1~12 0~7 指令
其中* 代表所有取值,逗号(,)用于隔开某个段不同的取值,减号(-)表示开始时间至结束时间,(/n)表示每隔n个时间单位执行一次.
例子:
30 * * * * command #表示每个小时的第30分执行一次
1,3,10 * * * * command #表示每个小时的第1,3,10分钟执行一次
10 8-10 * * * command #表示8:10 ,9:10 10:10分执行任务
*/10 * * * * command # 表示每隔10分钟执行一次
注意: 周 和 日期 月份 不能同时使用。
实验:能否直接在/var/spool/cron下添加一个与用户名字(oracle)相同的文件,然后对其编辑来达到crontab -e的效果呢??
答案是 :可以的!不过由于/var/spool/cron 这个目录的拥有者是 root 而且权限是 700,所以只能通过一下方式添加文档:
1、切换到 root用户 添加名称为oracle的文档,并编辑计划任务,此方法 其实相当于在root用户下使用: crontab -u oracle -e 这条命令。
2、root更改/var/spool/cron目录的权限为 777 然后切换到oracle用户,/var/spool/cron 到下面添加并编辑 oracle文档,为了安全编译好文档后请把/var/spool/cron目录的权限改成700.
---提倡用第一种方法!
此时会在/var/spool/cron 目录下创建一个跟当前用户名一样的文件名,
该文件名将记录当前用户的cron计划任务.
格式:
代表意义: 分钟 小时 日期 月份 周 指令
取数范围: 0~59 0~23 1~31 1~12 0~7 指令
其中* 代表所有取值,逗号(,)用于隔开某个段不同的取值,减号(-)表示开始时间至结束时间,(/n)表示每隔n个时间单位执行一次.
例子:
30 * * * * command #表示每个小时的第30分执行一次
1,3,10 * * * * command #表示每个小时的第1,3,10分钟执行一次
10 8-10 * * * command #表示8:10 ,9:10 10:10分执行任务
*/10 * * * * command # 表示每隔10分钟执行一次
注意: 周 和 日期 月份 不能同时使用。
实验:能否直接在/var/spool/cron下添加一个与用户名字(oracle)相同的文件,然后对其编辑来达到crontab -e的效果呢??
答案是 :可以的!不过由于/var/spool/cron 这个目录的拥有者是 root 而且权限是 700,所以只能通过一下方式添加文档:
1、切换到 root用户 添加名称为oracle的文档,并编辑计划任务,此方法 其实相当于在root用户下使用: crontab -u oracle -e 这条命令。
2、root更改/var/spool/cron目录的权限为 777 然后切换到oracle用户,/var/spool/cron 到下面添加并编辑 oracle文档,为了安全编译好文档后请把/var/spool/cron目录的权限改成700.
---提倡用第一种方法!
2.7、/etc/crontab
该文件默认情况下只有root可以编辑,.一般用于系统性的计划任务
格式:
min hour date month day user command
分 时 日期 月 星期 用户 命令
其他字段与crontab -e下的一样,user字段用于指定执行该命令的用户
格式:
min hour date month day user command
分 时 日期 月 星期 用户 命令
其他字段与crontab -e下的一样,user字段用于指定执行该命令的用户

没有评论:
发表评论