没有GUI,纯命令行检测磁盘大文件大小及从大到小排序;很实用;
主理人序
再大的服务器,用久了磁盘剩余空间也会变得越来越少
;何况我们大多数买的服务器本身存储空间有限,所以抽时间进行一次磁盘清理
,将一些大文件删一删是很有必要的;(完全可以实现脚本自动化清理)
本文章实用性说明
1.检测Linux服务器的磁盘文件大小;
2.重点清理项目;
实用命令
0.查看硬盘剩余空间
$ df -h #查看当前硬盘剩余空间并以GB单位表示
文件系统 容量 已用 可用 已用% 挂载点
udev 448M 4.0K 448M 1% /dev
tmpfs 99M 1.1M 98M 2% /run
/dev/sda 25G 13G 9.9G 57% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
tmpfs 99M 0 99M 0% /run/user/0
1.查找大文件
find . -type f -size +100M #查找当前目录100M以上的文件
2.对查找结果按照文件大小做一个排序
find . -type f -size +10M -print0 | xargs -0 du -h | sort -nr
2.1查看当前目录下某个类型的文件或数量
find . -type f -print | grep php
find . -type f -print | grep php | wc -l
3.查找当前目录下前20的大目录
du -hm --max-depth=2 | sort -nr | head -20
*这个命令我常用,先列出20来个大占用的文件夹,一一击破;
4.计算当前目录下所有图片大小,单位为MB;
du -m `find ./ -type f -iname '*.jpg|*.png|*.jpeg'`|awk '{sum+=$1} END {print sum}'
重点清理项目
Mysql 日志
手动清理日志文件
mysql binlog;我的日志竟然有7Gb... /usr/local/mysql/var
一般存放位置;
1.登陆进入mysql,并使用 show binary logs;
查看日志文件。
root@localhost:/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
root@localhost:/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 即可;
root@localhost:/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
查看有多少日志;
root@localhost:/home/wwwlogs# ls
nginx_error.log
GeoLiteCity.dat limbopro.com.log
access.log
使用 > + 文件名
清理日志文件;
root@localhost:/home/wwwlogs# > limbopro.com.log
root@localhost:/home/wwwlogs# > access.log
定时清理日志文件
使用 crontab 定时清理日志文件;
root@localhost:/home/wwwlogs# crontab -e
添加一条,设置每日凌晨零点自动清空日志:
0 0 1,15 * * > /home/wwwlogs/limbopro.com.log; #每月1和15号自动清理日志
0 0 1,15 * * > /home/wwwlogs/access.log; #每月1和15号自动清理日志
保存,退出,重启 Crontab;
root@localhost:/home/wwwlogs# service cron restart
root@localhost:/home/wwwlogs# service cron reload
*日志文件具体位置,以实际为准;本方法比较粗暴;
参考1:Linux crontab命令及其用法;
journalctl 日志清理
配置文件路径: /etc/systemd/journald.conf
;
日志存放文件夹:/var/log/journal
;
systemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中。
清理大于20MB的日志,大家可以将清理命令放在 crontab 自动运行:
journalctl --vacuum-size=20M
系统日志清理
系统日志位于 /var/log
;日志文件会变得越来越大,我们可以用ncdu工具来查看大日志文件。
sudo apt-get install ncdu
sudo ncdu /var/log #然后按i键
ncdu 1.14.1 ~ Use the arrow keys to navigate, press ? for help
--- /var/log ----------------------------------------------------------------------------------------------------------------------------------------------------------------------
48.0 MiB [##########] /journal ┌───Item info──────────────────────────────────────────────┐
16.9 MiB [### ] auth.log │ │
15.0 MiB [### ] redis_6379.log
...
然后进入 /var/log/
cd /var/log/
> redis_6379.log
安装包清理
查看安装包缓存大小
du -sh /var/cache/apt/archives
使用如下命令删除已经安装过的deb包
sudo apt-get clean
sudo apt-get autoclean
删除孤儿软件包 已经没有用处的依赖
sudo apt-get autoremove
清除手动安装的依赖包
deborphan
sudo apt-get install deborphan
deborphan | xargs sudo apt-get purge -y
删除大容量已安装软件包
首先安装debian-goodies
sudo apt-get install debian-goodies
然后输入下面的命令
dpigs -H
我的输出结果
531.3M linux-firmware
315.0M fonts-noto-extra
282.0M libgl1-mesa-dri
214.7M golang-1.13-go
212.9M linux-image-4.11.8-041108-generic
181.1M linux-modules-extra-5.4.0-60-generic
181.1M linux-modules-extra-5.4.0-59-generic
181.1M linux-modules-extra-5.4.0-58-generic
166.2M docker-ce-cli
123.3M containerd.io
上面的命令默认只会显示前10个结果,你可指定结果的个数,比如20个
dpigs -H --lines=20
软件包卸载命令
apt-get purge #purge 后面接软件包名称
apt-get --purge remove #配置文件也清理掉 命令后面接软件包名称
示范 以 删除 golang-1.13-go
软件包举例;
root@localhost:~# apt-get purge golang-1.13-go
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
golang-1.13-race-detector-runtime golang-1.13-src golang-race-detector-runtime golang-src
使用'apt autoremove'来卸载它(它们)。
下列软件包将被【卸载】:
golang* golang-1.13* golang-1.13-doc* golang-1.13-go* golang-doc* golang-go*
升级了 0 个软件包,新安装了 0 个软件包,要卸载 6 个软件包,有 57 个软件包未被升级。
解压缩后将会空出 230 MB 的空间。
您希望继续执行吗? [Y/n] Y
相关知识
LINUX的磁盘管理du命令详解
du(disk usage)命令
可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
DU命令用途
du(disk usage)命令可以计算文件或目录所占的磁盘空间。没有指定任何选项时,它会测量当前工作目录与其所有子目录,分别显示各个目录所占的快数,最后才显示工作目录所占总快数。
找出大文件
磁盘空间被耗尽的时候,免不了要清理一下,比如说/home目录太大,就可以使用下面命令看看到底是谁:
du -s /home/* | sort -nr #/home目录检测
附注
版权属于:毒奶
联系我们:https://limbopro.com/6.html
毒奶搜索:https://limbopro.com/search.html
机场推荐:https://limbopro.com/865.html IEPL专线/100Gb/¥15/月起
毒奶导航:https://limbopro.com/daohang/index.html本文链接:https://limbopro.com/archives/2713.html
本文采用 CC BY-NC-SA 4.0 许可协议,转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!