Chinaunix首页 | 论坛 | 博客
  • 博客访问: 475571
  • 博文数量: 122
  • 博客积分: 1403
  • 博客等级: 中尉
  • 技术积分: 1668
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-11 13:31
文章分类

全部博文(122)

文章存档

2018年(5)

2017年(12)

2014年(15)

2013年(33)

2012年(4)

2011年(53)

分类: LINUX

2011-02-17 16:15:45

一、计划任务
 
Linux系统支持一些能够自动执行任务的服务我们称其为计划任务:
at:指定一个时间执行一个任务  c
cron:根据一个时间表自动执行任务
anacron:在一个指定时间间隔错过后自动执行任务
 
at服务:安排一个任务在未来执行
at服务需要系统后台有一个atd进程
常用指令
at:安排延时任务
atq:查询当前的等待任务
atrm:删除等待任务
batch:以一个低优先级延时执行任务
at命令的写法非常灵活:
at 18:00pm July 9
at 6 pm Monday
at 2:00
at noon + 5 minutes
回车后可以在之后的at>提示符下输入任务指令,完成后CtrlD存盘退出。
范例:
$at now + 2 minutes
 
默认情况下,任何用户都可以使用at服务,但这样是不安全的。
如果系统中存在at.allow,则只有在列在文件中的用户才可以使用at服务。
如果系统中存在at.deny,则列在文件中的用户不可以使用at服务,其他人可以。
 
cron
允许系统根据时间表自动完成任务
服务需要后台运行的系统进程crond
开关cron服务
系统管理员可以用service crond start|stop来开关cron服务
chkconfigntsysv选择cron服务的默认开启关闭。
 
定制个人计划任务
crontab命令用于建立、删除或者列出用于驱动cron后台进程的表格。也就是说,用户把需要执行的命令序列放到crontab文件中以获得执行。每个用户都可以有自己的crontab文件, /var/spool/cron下的crontab文件不可以直接创建或者直接修改,crontab文件是通过crontab命令得到的。现在假设需要创建自己的一个 crontab文件。
用户级别
crontab e:编辑当前的守护进程表
crontab l:列出当前的守护进程表
crontab r:删除当前的守护进程表
crontab u user:以某一个用户的身份
/var/spool/cron:存放用户守护进程表
 
crontab格式
该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令,每个域之间使用空格或者制表符分隔。格式如下∶
minute  hour  day-of-month  month-of-year  day-of-week  commands
第一项是分钟,第二项是小时,第三项是一个月的第几天,第四项是一年的第几个月,第五项是一周的星期几,第六项是要执行的命令。这些项都不能为空,必须填入。如果用户不需要指定其中的几项,那么可以使用 *代替。因为*是统配符,可以代替任何字符,所以就可以认为是任何时间,也就是该项被忽略了。
时间表示格式如下:
                       允许值范围
              -----          --------------
              分钟                0-59
              小时                0-23
                                 1-31
                                 1-12 (或者用jan/feb等名字)
              星期几             0-7 (07是周日,也可以用mon,tue等表示)
 
系统的守护任务列表中第六项为命令运行人,第七项才是运行任务。
使用run-parts来代替命令,表示运行其后目录内的所有可执行文件。
系统级别
采用/etc/crontab作为其crond的运行配置文件
与个人的crontab文件格式有所不同
默认情况下,系统会自动执行以下目录内的脚本
/etc/cron.hourly:每小时的零一分
/etc/cron.daily:每天四点零二分
/etc/cron.weekly:每周日四点二十二分
/etc/cron.monthly:每月一日四点四十二分
/etc/cron.d/目录下存放着附加的系统守护文件
 
默认情况下,所有用户都可以定制自己的守护任务
系统的守护任务只能由root来编辑
限制/允许 用户使用cron
/etc/cron.allow
/etc/cron.deny
如果系统中存在cron.allow,则只有在列在文件中的用户才可以使用crontab指令来定制自己的守护任务。
如果系统中存在cron.deny,则列在文件中的用户不可以使用crontab指令来定制自己的守护任务,其他人可以。
 
 
Anacroncron服务的扩展
防止非24小时开机的计算机遗漏守护任务
每次计算机通电时自动检测
配置文件:/etc/anacrontab
范例:
7 80   cron.weekly   run-parts  /etc/cron.weekly
anacron 任务被列在配置文件 /etc/anacrontab 中。文件中的每一行都代表一项任务,格式是:
period  delay  job-identifier  command
period 命令执行的频率(天数)
delay 延迟时间(分钟)
job-identifier 任务的描述,用在 anacron 的消息中,并作为作业时间戳文件的名称,只能包括非空白的字符(除斜线外)。
command 要执行的命令
对于每项任务,anacron 先判定该任务是否已在配置文件的 period 字段中指定的期间内被执行了。如果它在给定期间内还没有被执行,anacron 会等待 delay 字段中指定的分钟数,然后执行 command 字段中指定的命令。
任务完成后,anacron /var/spool/anacron 目录内的时间戳文件中记录日期。只有日期被记录(无时间),而且 job-identifier 的值被用作时间戳文件的名称。
cron 配置文件一样,SHELL PATH 之类的环境变量可以在 /etc/anacrontab 文件的前部定义。
默认的配置文件看起来和以下相似:
# /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# These entries are useful for a Red Hat Linux system.
1    70       cron.daily       run-parts   /etc/cron.daily
7    85     cron.weekly    run-parts   /etc/cron.weekly
30   85     cron.monthly  run-parts   /etc/cron.monthly
阅读(429) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~