8、1cron:按时间表执行命令linux下,周期执行的任务一般由cron这个守护进程来处理。cron在系统引导时启动,读取一个或者多个配置文件。
cron的配置文件称为“crontab”,在三个地方查找crontab文件。
/var/spool/cron
/etc/cron.d
/etc/crontab
每个用户的crontab文件都保存在/var/spool/cron目录下。一般而言,一个用户最多有一个crontab文件,crontab文件是以他们所属用户的登录名来命名的。
负责安排由系统管理员指定的系统维护以及其他任务的crontab文件都保存在/etc/crontab文件以及/etc/cron.d目录下的其他文件。一般而言,/etc/crontab供管理员手工维护,而/etc/cron.d目录则提供一个地方,软件包把它们可能需要的任何crontb项安装在这里。
8、2crontab文件的格式
下面是命令的语法:
minute hour day month weekday [username] command
username字段只出现在/etc/crontab文件和/etc/cron.d目录下
cron使用百分号%来表示command字段中的换行。只有第一个百分号之前的文本才会包含在实际命令中,其余行则作为该命令的标准输入。
例子:
echo The time is now 'date' > /dev/console
mail -s Reminder evi$anchor & Don't forget to write your chapter
cd /etc; /bin/mail -s "Password file" evi < passwd
30 2 * * 1 (cd /users/joe/peotect; make)
20 1 * * * find /tmp atime + 3 -exec rm -f {} ';'
这条命令将在每天凌晨1:20删除在/tmp目录中3天没有被人访问的文件
8、3crontab管理
用/etc/cron.allow 和 /etc/cron.deny 这两个配置文件可以指定哪些用户可以提交crontab文件。
重要的是,访问控制是由crontab而不是cron来实现的,如果某个用户能够通过其他方式把crontab文件秘密的转移到合适的目录中去,那么cron也会盲目执行。
8、4cron的常见用途
清理文件系统:
下面是采用find命令的几个惯用法
find / -xdev type f '(' -name core -o name 'core[0-9]*'' ')' atime +7 -exec rm -f () ';'
这个命令将删除那些在一个星期中没有被访问的core映像文件。-xdev参数确保find不会执行到根文件系统之外的文件系统。
cd /tmp; find . ! -name . ! -name lost+found -type d -mtime +3 -exec /bin/rm -rf {} ';'
这条命令将递归删除/tmp下72小时之内没有被修改过的所有子目录。
问题:那一堆乱七八糟的单引号是什么意思?
习题:
以du、sort和head命令,编写一个脚本,确定系统上最大的10个主目录。在每周一的夜里12:00执行这个脚本,并且把输出结果发给你。提示:要用到按数字逆序排序
0 0 * * * (cd /~; du -a | sort -rn | head)
sort的n选项表示结果按大小顺序排序
阅读(1123) | 评论(0) | 转发(0) |