首先介绍下查看某个文件夹大小的linux命令:
cd 进入某个文件夹
du -sh //读取当前文件夹的大小
du -h --max-depth=1 //读取当前文件夹下面一级每个文件夹的大小
(du -h --max-depth=1 命令会出现一些类似lock->../run/lock这样的带有->符号的文件夹不会显示出来,需要手动du -sh查询)
用du -sh * 也可以查看当前文件夹下面一级每个文件的大小
【针对TP网站项目】
首先如果是linux中放置了thinkphp项目,我这里以TP5为例说明。
调试模式和log记录日志会在网站根目录下的runtime文件夹中生成很多文件,占用空间。
调试模式和日志都可以在config.php文件中设置。
'app_debug' => false, //调试模式设置为false
'log' => [
'type' => 'test', //这里设置为test
'path' => LOG_PATH,
'level' => [],
],
最后,注意观察runtime文件夹大小即可。
【针对服务器本身程序运行】
用上面命令查看根目录下的每一个文件夹的大小,只看根目录这一级的文件夹。
以我这边查看的举例说明,我这边看到超过500M的根目录下的文件夹有:
/lib 821M (正常500多M左右,不超出太多可以不考虑)
/usr 8.3G (正常1.9G左右,超出太多需要做处理)
/var 5.1G (正常450-550M左右,超出太多需要做处理)
/www 5.2G (正常2个多G,超出太多需要做处理)
这里开始一个个文件分析为什么占用这么大空间。
(1)/lib 821M
根目录下的所程序的共享库目录,不超出太多,不需要做删除和优化处理。
(2)/usr 8.3G
local 文件夹占用5.6G。其他都是一些必要文件占用的,暂不做考虑。
local里面查看会发现是mysql和mongodb占用了较大空间,这个linux如果装了mongodb和mysql 数据库,也是必须要的数据,正常占用空间。
(3)/var 5.1G
447M ./cache
120K ./spool
4.0K ./gopher
4.0K ./local
4.0K ./opt
4.0K ./games
20K ./db
198M ./lib
8.0K ./empty
4.0K ./preserve
4.0K ./crash
4.0K ./nis
4.0K ./adm
108M ./www
12K ./tmp
4.0K ./yp
4.4G ./log
12K ./kerberos
--------------------------------------------------
①发现--主要是log占用了4.4G,系统日志一般都存在/var/log下。
处理方案:这个可以在宝塔计划任务中添加切割日志的任务。
(切割日志第二天再查发现只占4K 空间,恢复正常)
----------------------------------------------------------------------------
②发现--cache占了447M,查看cache下文件夹,发现yum文件夹占了444M,再一级级打开发现
/var/cache/yum/x86_64/7/epel 这个占据了268M。正常占据60M左右。
最后发现是这2个文件占据了多余的大小,如果觉得占用不算大,也不必删除。
(4)/www 5.2G
4.0M ./wwwroot
3.6G ./server
117M ./backup
152K ./Recycle_bin
466M ./wwwlogs
可以看到有3.6G在server文件夹中,这个装的是redis,mongodb,php ,nginx,mysql等等程序。
server文件夹再查看,
188M ./nginx
70M ./redis
185M ./php
19M ./panel
738M ./mongodb
371M ./mysql
2.0G ./data
3.9M ./cron
13M ./tomcat
29M ./phpmyadmin
4.0K ./phpinfo
8.0K ./stop
可以看到占用最多的是data文件夹。
而data文件夹内是因为生成下面这样的mysql数据库日志文件导致占用空间变大。
mysql-bin.0000x这种格式是MySQL的主从日志文件,如果你的服务器不需要主从复制的话,日志文件可以删掉。
删除方法:
①mysql -u root -p //连接linux,执行连接数据库命令
②输入mysql数据库密码
③reset master;
//(这里的命令包括;)
删除后整个data占用了472M,还算正常范围。
----------------------------------------------------------
上面删除主从日志文件后,还会自动生成,可以修改下配置
#关闭主从日志生成或者定时清理日志文件
如果不需要数据库主从复制功能,可以将MySQL的配置文件my.cnf里的参数log-bin=mysql-bin
和binlog_format=mixed
前面加上#号,将其注释掉,然后重启MySQL即可。
如果想保留日志的生成,然后定期自动清理的话,可以将配置文件的expire_logs_days
这个参数开启或者添加上,如下图,参数后面的数字代表日志文件保留的天数,宝塔面板默认是保留存放10天。
你可以改成3天也行。上面那个方法设置的2行代码就不要加#了。
【针对上面的my.cnf配置文件位置说明】
1、Windows下MySQL的配置文件是my.ini,一般会在安装目录的根目录。
2、Linux下MySQL的配置文件是my.cnf,一般安装目录的根目录会有my.cnf,但是起作用的是/etc/my.cnf。
要到服务器根目录下的etc文件下修改my.cnf文件。