周期性进程(任务计划)
任务计划:在未来的某个时间点,执行某个或一系列任务。执行结果会以邮件的形式发送给管理员
当cron启动的时候,他会读取配置文件,把它们保存在内存中,然后,转入睡眠状态。每一分钟,croon会醒来一次,检查crontab文件的修改时间。重新载入任何被改过的文件,然后在返回睡眠状态,执行这一分钟安排的任务。
1、配置文件:crontab,是cron table的缩写
cron在三个地方查找文件,/var/spool/cron,/etc/cron.d,/etc/crontab,每个用户的crontab文件都存放在/var/spool/cron目录下。一个用户对应一个文件。而系统用户的则放在/etc/cron.d或/etc/crontab下
2、系统的cron任务
在/etc/cron,/etc/cron.d下配置,这是有系统管理员分配的,这两个目录时平行的关系。
3、其他普通用户的任务
会在/var/spool/cron下生成该普通用户的用户名对应的一个以用户名命名的文件。
4、crontab文件的格式
minute hour day month weekday [username] command
分钟 小时 天 月 周 用户 所执行的命令
分钟:1-59
小时:1-23
天:1-31
月:1-12
周:0-6(0为星期天)
每个和时间相关的字段可以有(时间通配符):
* :可以代表所有的
- :[1-5]分钟,可以代表一个范围
, :逗号隔开,表示不连续的多个时间点
整数 :则精确匹配
/# :对应的范围内每多久一次,20 /2 * * 1,周一的每两个小时,每隔20分钟执行一次
实例:
1、45 10 * * 1-5
从周一到周五,上午10.45
2、0,30 * 13 * 5
weekday和day都指定,满足两个条件中的一个即可。
上面的则代表:星期五的每半个小时,也可以为每月13号的每半个小时
3、30 2 * * 1 (cd /users/joe/project; make)
每周一的凌晨2.30,会在/users/joe/project目录下运行make
4、20 1 * * * find /tmp -atime +3 -exec rm -f { } ';'
每天的1.20,删除/tpm目录下,3天没有被访问的文件
crontab管理
crontab的所有操作都是对当前用户而言:
crontab -l:列出当前用户的任务
crontab -e:编辑某个任务(以当前用户的身份),也可用于新建任务
crontab -r:移除所有任务
crontab -u username:管理其他用户
用/etc/cron.allow和/etc/cron.deny这两个配置文件可以指定哪些用户可以提交crontab文件。
ls /etc/cron* cron.hourly/ cron.weekly/ cron.daily/ cron.monthly/
这四个目录下有相应的程序,它们会在相应的时间运行(有后缀名可知),这是系统自己的周期性任务
cron的常见用途
1、清理文件系统
find / -xdev -type f '(' -name core -o name 'core.[0-9]*' ')' -atime +7 -exec rm -f { } ';'
删除一个星期中都没有被访问的core映像文件。
-xdev:确保find命令不会执行到根文件系统以外的文件系统中去。
-type f:linux内核源代码包括一个目录也叫做core,不应该删除它。
find / -xdev -atime + 3 '(' -name '#*' -o -name '.#*' -o -name '*.CKP' -o -name '*~' -o -name '.nfs*' ')' -exec rm -f { } ';'
删除哪些用#、.#或者.nfs开头的文件或以~以及.CKP结尾且三天没有被访问的文件
cd /tmp; find . ! -name . ! -name lost+found -type d -mtime +3 -exec /bin/rm -rf { } ';'
递归删除/tmp下在72小时内没有被修改过的所有子目录
其他的日程安排程序:ANACRON
anacron:cron的补充,弥补了cron应系统当机或机器时间出现不连续的情况而没有执行到相应的命令。