没有GUI,纯命令行检测磁盘大文件大小及从大到小排序;很实用;

主理人序

再大的服务器,用久了磁盘剩余空间也会变得越来越少;何况我们大多数买的服务器本身存储空间有限,所以如无必要进行磁盘清理,将一些大文件删一删是很有必要的;

本文章实用性说明

1.检测Linux服务器的磁盘文件大小;
2.重点清理项目;

实用命令

1.查找大文件

find . -type f -size +100M #查找100M以上的文件

2.对查找结果按照文件大小做一个排序

find . -type f -size +10M  -print0 | xargs -0 du -h | sort -nr

3.查找当前目录下前20的大目录

sudo du -hm --max-depth=2 | sort -nr | head -20

*这个命令我常用,先列出20来个大占用的文件夹,一一击破;

重点清理

Mysql 日志

手动清理日志文件

mysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var 一般存放位置;

1.登陆进入mysql,并使用 show binary logs; 查看日志文件。

[email protected]:/home/# mysql -u root -p
Enter password: #输入数据库密码
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.001368 |   3175578 |
| mysql-bin.001369 |    177599 |
+------------------+-----------+
2 rows in set (0.00 sec)

2.查看正在使用的日志文件:show master status;

mysql> show master status;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.001369 |   348563 |              |                  |
+------------------+----------+--------------+------------------+
1 row in set (0.00 sec)

如上,当前正在使用日志文件为mysql-bin.001369;那么等下删除日志文件应该排除掉该文件;

3.删除日志文件的命令:purge binary logs to 'mysql-bin.001369';

mysql> purge binary logs to 'mysql-bin.001369';
Query OK, 0 rows affected (0.02 sec)
mysql> show binary logs;
+------------------+-----------+
| Log_name         | File_size |
+------------------+-----------+
| mysql-bin.001369 |    949552 |
+------------------+-----------+
1 row in set (0.00 sec)

删除完毕;

定时清理日志文件

1.主理人自己已经设置其不产生日志;
2.编辑 mysql 的配置文件,设置expire_logs_days(mysql定时删除日志文件);

mysql> exit
Bye
[email protected]:/home/# vim /etc/my.cnf

编辑 /etc/my.cnf 文件;找到 expire_logs_days = 10,这里设置的自动删除时间为10天;

log-bin=mysql-bin
binlog_format=mixed
server-id       = 1
expire_logs_days = 10

改好,保存;重启 MySQL 即可;

[email protected]:/home/# lnmp mysql restart

或可编辑 mysql 的配置文件,注释掉以下两项即可不再产生日志,保存重启MySQL;

##注释 log-bin=mysql-bin
##注释 binlog_format=mixed

参考1:Mysql 日志爆满,删除日志文件,定时清理日志
参考2:Mysql之binlog日志说明及利用binlog日志恢复数据操作记录

Nginx 日志

手动清理日志文件

nginx log;
以前博客被CC攻击/压测的时候每天产生6 7 8GB的日志/home/wwwlogs 我存放位置;

找到相关日志,直接使用命令 ls 查看有多少日志;

[email protected]:/home/wwwlogs# ls
nginx_error.log
GeoLiteCity.dat         limbopro.xyz.log 
access.log              

使用 > + 文件名 清理日志文件;

[email protected]:/home/wwwlogs# > limbopro.xyz.log
[email protected]:/home/wwwlogs# > access.log 

定时清理日志文件

使用 crontab 定时清理日志文件;

[email protected]:/home/wwwlogs# crontab -e

添加一条,设置每日凌晨零点自动清空日志:

0 0 1,15 * * > /home/wwwlogs/limbopro.xyz.log; #每月1和15号自动清理日志
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志

保存,退出,重启 Crontab;

[email protected]:/home/wwwlogs# service cron restart
[email protected]:/home/wwwlogs# service cron reload

*日志文件具体位置,以实际为准;本方法比较粗暴;

参考1:Linux crontab命令及其用法

相关知识

LINUX的磁盘管理du命令详解

du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。

DU命令用途
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。

找出大文件
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:

du -s /home/* | sort -nr #/home目录检测

via linux实用的磁盘大文件及大文件夹查找命令

最后修改:2019 年 12 月 31 日 02 : 47 PM