Chinaunix首页 | 论坛 | 博客
  • 博客访问: 572004
  • 博文数量: 107
  • 博客积分: 4406
  • 博客等级: 上校
  • 技术积分: 1279
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-07 16:20
文章分类

全部博文(107)

文章存档

2014年(4)

2012年(4)

2011年(16)

2010年(7)

2009年(7)

2008年(11)

2007年(49)

2006年(9)

分类: LINUX

2007-04-24 18:02:54

crontab文件格式:
minute   hour    day      month     weekday    [username]    command
(0~59)  (0~23)  (1~31)    (1~12)     (0~6)
其中:星号可以匹配所有字符;一个整数必须精确匹配;用短划线隔开的两个整数,他们匹配的是值的范围;
用逗号隔开的整数或者范围,匹配任何被列到的值。
例如:  45 10  *   *  1-5          上午10:45从周一到周五
不要把星号放在第一个字段,除非你想这个命令每分钟都执行。
weekday与day若同时指定,则满足二者之一即被执行。
例如:0,30   *  13   *  5             星期五每半小时,以及每月13号每半小时
 
command就是要执行的sh命令,可以是任意有效的shell命令,并且不应该加引号。cron 认为command一直是到这一行的末尾,它可以包含空格或制表符。
cron使用百分号(%)来表示command字段的换行。只有第一个百分号前的文本才会包含在实际命令中,其余行则作为该命令的标准输入。
例如:
echo  The time is now `date` > /dev/console
write garth %Hi Garth % Remember to get a job.
cd /etc; /bin/mail  -s "password file" evi < passwd
 
30   2   *   *   1   (cd /users/joe/project; make)
 
20   1   *  *   *  find  /tmp  -atime  +3  -exec  rm -f { } ';'
每天凌晨1:20删除/tmp目录中的3天内未被访问的所有文件
55  23  *   *  0-3,6    /staff/trent/bin/acct-script
除了星期四、五外每天23:55 运行acct-script
 
管理crontab
crontab  filename  将filename安装为crontab文件,它将替代crontab文件以前版本。
crontab -e     检出一个crontab的一个副本,用编辑器打开,然后将其重新提交给crontab目录(/var/spool/cron/'username')。
crontab  -l      将crontab中内容列在标准输出上。
crontab -r       删除crontab。
不带命令行的crontab将试图从他自己的标准输出中读取crontab内容。如果意外进入,不要试图使用Ctrl-D退出,那样会删除整个crontab内容,而要使用Ctrl-C退出。
对于root,有这样的命令:crontab -u loki  -r   删除属于loki的crontab文件。
默认情况下,所有用户都可向cron提交crontab文件。其默认的用户配置文件是: /etc cron.allow   /etc  cron.deny  。如果没有这两个文件的话,只有root才能提交crontab。
重要的是,访问控制是由crontab而不是cron来实现的。如果某用户可通过其他方式把crontab秘密转移到适合目录中去,那么cron就会盲目地执行该文件中的命令。
Linux预安装好的crontab项主要在/etc/cron.d下,如果想使某项不起作用,可以注释掉。
另外,还有/etc/cron.daily 每天运行一次的脚本;   /etc/weekly  每周运行一次的脚本。
常见用途:
清理文件系统
find  /  -xdev  -name  core -atime  +7  -exec  rm -f { } ';'
删除一星期都没访问过的core映象文件(程序崩溃时产生的映象文件)。
find  /  -xdev  -atime  +3  '('  -name  '#*'  -o  -name  '#*'  -o -name  '*.CKP'  -o  -name  '*~'  -o  -name  '.nfs~'  ')'  -exec   rm -f { } ';'
删除以 #,.#或nfs开头的,或者是以 ~ 以及.CKP结尾的文件,还有3天未被访问的文件,不同类型的临时文件和编辑器的备份文件,都是这一模式的典型代表。
cd  /tmp ;  find  .  !  -name  .  !   -name  lost+found  -type  d -mtime  +3  -exec /bin/rm  -rf  { } ';'
递归删除/tmp下的72小时未修改的所有子目录。/tmp下的普通文件会在系统启动时被系统启动脚本删除,但有些系统不会删除目录。
阅读(1309) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~