crond是一个服务,一个守护进程。crond 是linux用来定期执行程序的命令,crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。
按照网上查找的资料执行时经常会碰到这种错误:
crontab: chdir(/var/spool/cron/crontabs): No such file or directory
所以首先创建这样一个目录吧!
#mkdir -p /var/spool/cron/crontabs
添加编辑要执行的任务,执行
#crontabs -e
find /home/plg/picture -type d -mtime +3 -exec rm {} \; 定时删除三天前的目录
find 命令可以完成这一需求,比如删除3天前的所有以“.log”结尾的文件:
find /文件路径 -name "*.log" -mtime +2 -exec rm {} \;
说明:
1. 文件路径是目标文件所在路径;
2. -name 设定目标文件名,建议采用,否则可能误删其他文件;
3. -ctime 文件最后一次修改时间,后面只能用整数,单位为天,同时,还有atime,mtime,amin,cmin,mmin等时间参数可选,具体请查看帮助;
4. 时间说明如下图(随手画的,大概是这个意思),所以删除三天前的文件要用+2
5. -exec 表示需要执行的命令,{}代表find找到的内容,"\;"是固定写法表示结束-exec,
所以例子的"-exec rm {} \;" 就表示对find找到的符合条件的文件执行删除操作
最后,执行下
#crond
此时你会发现/var/spool/cron/crontabs下有一个跟用户名相同的文件,保存着要执行的任务。
ps下会发现cron进程已经启动!
以上内容参见文章: http://www.linuxidc.com/Linux/2014-02/97360.htm
【问题】
实践中发现问题如下:
在主机端开发板NFS目录下var里新建的文件夹在开发板的/var下面查看,并未找到文件夹,同样在开发板端/var目录下新建的文件夹或者文件,在主机端也没有出现,最后感谢王师傅,得到了解决方案与原因:
【原因】
var下面很多文件一直在刷新,电脑硬盘无所谓,嵌入式存储用的flash,擦写多了严重影响寿命,所以var目录下的内容实际为内存虚拟的,并不存在与flash之中。
【解决方案】
在开发板/etc/crontabs/下建立crontab的配置文件root:
* * * * * /myupdate/update
每分钟执行update一次
然后在/etc/init.d/rcS修改,让开发板每次启动之后自动执行:
mkdir -p /var/spool/cron/crontabs#guoshufanADD
cp -p /etc/crontabs/root /var/spool/cron/crontabs#guoshufanADD
chmod 777 /var/spool/cron/crontabs/root#guoshufanADD
crond#guoshufanADD
echo "cp cron config file to /var/spool/cron/crontabs"#guohufanADD
即新建crontab配置文件目录,然后将配置文件按拷贝至新建目录下,完美解决问题,不过要记得执行chmod命令,以后只需要修改root中的内容就可以改变crontab配置,不过临时修改配置还是需要去/var/spool/cron/crontabs内的rooot文件,永久修改是修改/etc/crontabs/root,重启生效。
