php 定时删除文件夹,Linux 定时任务 删除指定时间前的文件

♩ 背景

随着网站体量的不断增大,很多缓存日志造成资源你的浪费,为此,想着写一个计划任务,定期删除没必要的缓存数据

♪ 操作指导

①. 新建一个可执行文件

touch /usr/local/bin/clear_log

注意,赋予权限:chmod 777 clear_log

②. 编辑 clear_log 文件,在其中添加类似下面的代码

#!/bin/sh

find /mnt/www/Application/Runtime/Logs -mtime +10 -name *.* -exec rm -rf {} \;

find /tmp -type f -mmin +120 -name *.log -exec rm -rf {} \;

解析:

find 后面紧跟的是要查找的目录,. 表示当前目录

-type f: 指定查找对象为文件

-name *.log: 指定查找对象名称以.log结尾

-mtime +10: 查找10天以前的老文件

-mmin +120: 查找120分钟(两小时)以前的老文件

-exec rm -rf {} ; :执行删除命令,这句注意,后面有个 {} ; 是必须的

③. 将 clear_log 文件加入到系统计划任务

# crontab -e

然后,输入:

# 每三十分钟执行一次

*/30 * * * * /usr/local/bin/clear_log

④. 保存代码后 ,再执行下面的命令,以保证计划任务的生效

# /etc/rc.d/init.d/crond restart

62c613b861e79a6744fae27008ed87f7.png

♫ 附录

①. 磁盘使用状况:

可通过 df -h 查看磁盘使用情况

通过 du -h --max-depth=1 查看对应目录下文件的资源占用情况

08029c6d31ebc06485e5d0939756ed9d.png

通过分析以上数据,判断哪个目录或者缓存、log文件占用资源大,进行后面的删除操作

②. 参考文章:

③. PHP 删除指定目录下的文件

在搜索本文解决方案时,发现,也可以使用代码进行文件的删除,比如我使用的是PHP,那么可以指定目录,进行删除其下的所有文件

/**

* 删除对应目录下的所有文件

* @param $path 传入目录

* 举例: delServerDir("/mnt/www/Application/Runtime/Logs/");

*/

function delServerDir($path){

//如果是目录则继续

if(is_dir($path)){

//扫描一个文件夹内的所有文件夹和文件并返回数组

$p = scandir($path);

foreach($p as $val){

//排除目录中的.和..

if($val !="." && $val !=".."){

//如果是目录则递归子目录,继续操作

if(is_dir($path.$val)){

//子目录中操作删除文件夹和文件

delServerDir($path.$val.'/');

//目录清空后删除空文件夹

@rmdir($path.$val.'/');

}else{

//如果是文件直接删除

unlink($path.$val);

}

}

}

}

}

在自己所定义的方法中,进行调用上述逻辑

最后,建议使用计划任务:【30 2 * * * /usr/bin/curl http://xxx.xxx.x.xxx/index/order/taskToDelRuntimeLogs】

具体的访问时间间隔自行修整即可

补充一个删除指定目录文件的方法:

/**

* PHP 删除指定的图片

* @param $filename 目标图片路径

* @return bool

*/

function deleteServerFile($filename)

{

if (file_exists($filename)) { //检查图片文件是否存在

$result = @unlink($filename);

return true;

// if ($result == true) {

// echo '删除成功';

// } else {

// echo '无法删除';

// }

} else {

return false;

//echo '找不到图片文件';

}

}

本文同步分享在 博客“moTzxx”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值