一、硬件为arm9开发板,系统为ubuntu Linux:
1、实现crond命令和find命令的结合使用,执行定时删除过期文件。
首先创建一个crond作业,然后crond服务会每分钟查询作业表有没有要做的事情。crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。总结,就是crond会根据crontab中设置的命令,然后执行自己想做的事情。
2、要建立一个crontab表,我这里是这么建立的,目录为:#mkdir -p /var/spool/cron/crontabs(为什么要创建一个这么样的目录?)。
然后编辑要执行的任务
#crontabs -e //打开编辑器,编辑。
0 */1 * * * /sbin/ntpdate 192.168.1.67 >/dev/null 2>&1 每隔一个小时更新下时间,不打印任何信息
最后,执行下
#crond
此时你会发现/var/spool/cron/crontabs下有一个跟用户名相同的文件,保存着要执行的任务。
二、crontab基本用法:
1. crontab -l
列出当前的crontab任务
2. crontab -d
删除当前的crontab任务
3. crontab -e (solaris5.8上面是 crontab -r)
编辑一个crontab任务,ctrl_D结束
4. crontab filename
以filename做为crontab的任务列表文件并载入
crontab file的格式:
crontab 文件中的行由 6 个字段组成,不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间
分钟 (0-59)
小时 (0-23)
日期 (1-31)
月份 (1-12)
星期几(0-6,其中 0 代表星期日)
第 6 个字段是一个要在适当时间执行的字符串
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date (solaris 5.8似乎不支持此种写法)
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
三、我实现方法是:
1、先创建一个crontab文件,格式为:* * * * * command。
我的内容为:0 0 * * * /bin/ddd.sh
就是在凌晨零点零分执行脚本ddd.sh。此脚本里面实现想要做的事情。
如:删除30天以前的过期文件:
find /xxx/xxx/ -type f -mtime +30 -exec rm -f {} \; >/var/spool/cron/crontabs/root
2、先创建一个目录:
mkdir -p /var/spool/cron/crontabs
当系统起来后,运行crond命令,然后系统会自动在上面创建的目录下创建一个新闻件,此文件名为root。(此文件名和系统根用户名称相同)
echo "30 1 * * * find /xxx/xxx/ -type f -mtime +30 -exec rm -f {} \; >/var/spool/cron/crontabs/root /以上命令删除30天以前的过期文件
chmod +x /var/spool/cron/crontabs/root