Chinaunix首页 | 论坛 | 博客
  • 博客访问: 782981
  • 博文数量: 143
  • 博客积分: 2077
  • 博客等级: 大尉
  • 技术积分: 2393
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-28 12:57
文章存档

2016年(2)

2015年(3)

2014年(3)

2013年(41)

2012年(94)

分类: LINUX

2012-10-16 10:08:20

循环执行的例行性工作调度:crontab
  循环执行的例行性工作调度是由cron(crond)这个系统服务来控制的。
/etc/cron.allow
/etc/cron.deny
  每个账号写一行,且 /etc/cron.allow 优先级高,建议只保存第一个文件。
  当用户使用crontab 这个命令新建工作调度之后,该项工作就会被记录到 /var/spool/cron/目录下,而且是以账号来作为判别的。例如 user1 使用 crontab 后,他的供货会被记录到 /var/spool/cron/user1 里面,但注意,不要用 vi 编辑这个文件,要用专门命令。
  
  cron执行的每项工作都会记录到 /var/log/cron 这个日志文件中,所以要经常检查这个文件。

#crontab [-u username] [-l|-e|-r]
  -u:只有root才能执行这个任务,也即帮其他用户新建/删除 crontab 工作调度。
  -e:编辑 crontab 的工作内容。
  -l:查阅crontab的工作内容。
  -r:删除所有的crontab 的工作内容,若仅要删除一项,请用 -e 去编辑。

例子:用 user1 的身份,在每天12:00给自己发信
$crontab -e
分 时  日 月  周 |<===============命令串=========================>|

加入上面一行就行。我们解释一下上面的格式吧:
代表意义    分钟      小时      日期      月份      周      命令
数字范围    0-59      0-23      1-31      1-12      0-7     就是命令
*  :代表任何时刻都接受的意思
, :代表分隔时段的意思,例如要执行的工作是在3点和6点,就写 3:00,6:00
-  :代表一段时间范围内,例如8点到12点就是 8-12
/n :n代表数字,即每个n单位间隔的意思,例如每五分钟就是 */5

例如:每年5月2日是某人生日,你要在5月1日的23:59分发一封邮件给他
   59 23 1 5 * mail mimi < /home/user1/lover.txt
      每五分钟执行/home/user1/tset.sh一次
   */5 * * * * /home/user1/test.sh

  还是要注意,执行命令一定要用绝对路径,这样比较不会出错。 


系统配置文件:/etc/crontab
  如果是系统的例行性任务,我们可以直接编辑 /etc/crontab 这个文件,cron会每分钟去读一次 /etc/crontab 与 /var/spool/cron 里面的数据。
  要注意的是, crontab -e 这个crontab 是/usr/bin/crontab 这个执行文件。/etc/crontab是纯文本文件。
  并且,修改这个文件后要重启服务:#/etc/init.d/crond restart.
解释:
SHELL:使用哪种shell.
PATH:执行文件查找路径.
MAILTO:若有额外STDOUT,以email将数据送给谁.
HOME:默认此shell的主文件夹所在.
01 * * * * root run-parts /etc/cron.hourly
  前五个字段之后,接的第一个字段,是“执行后面那串命令的身份”,这与crontab -e 不同,用户自己的crontab并不需要指定身份,但是/etc/crontab当然要指定身份,默认是以root执行。
  run-parts是一个脚本,可以which run-parts.这个命令会见将后面接的“目录”内的所有文件找出来执行!这也就是说,如果你想让系统每小时主动帮你执行某个命令,将该命令写成script,并将该脚本放置到/etc/cron.hourly/目录下即可。
  
  例子:新建一个目录,将每隔五分钟就要执行的可执行文件放进目录。
*/5 * * * * root run-parts /root/runcron
        若果我只是要执行一个程序呢?可以这样写:
*/5 * * * * /bin/mrtg /etc/mrtg/mrtg.cfg   

注意:
  1.资源分配不均的问题。某一时刻执行的例行性工作太多,导致系统太忙,这样不好,应该合理份额皮执行工作的时间。
  2.假如某一个工作调度一直出错,它就会一直发邮件给信箱,这样的情况时我们就用命令重定向,将输出的信息直接送到 /dev/null 里面去。
  3.安全的检验,有时候骇客会将木马等程序植入你的例行性工作调度,这时候我们就要养个好习惯,经常去 /var/log/cron 看看。
  4.周与日、月不可同时存在。



 
阅读(1061) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~