Debian 11 磁盘清理
TIME 2023-04-22 17:51
使用du
和df
命令查找和删除占用大量磁盘空间的文件或目录:
du -h # 列出当前目录下所有文件和目录的大小 du -h /home # 列出指定目录下所有文件和目录的大小 df -h # 列出挂载点的磁盘使用情况
df -h # 列出磁盘分区的总空间,已用空间、可用空间和使用率等 Filesystem Size Used Avail Use% Mounted on udev 982M 0 982M 0% /dev tmpfs 200M 464K 200M 1% /run /dev/sda2 39G 36G 1.1G 98% / tmpfs 1000M 0 1000M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda1 546M 80M 438M 16% /boot tmpfs 200M 0 200M 0% /run/user/1000
根据这个输出,可以看出当前磁盘空间使用率较高,特别是 /dev/sda2
文件系统已经使用了 98%,只剩下 1.1G 的可用空间。这意味着磁盘空间已经接近饱和,可能会影响到后续的操作和应用程序的运行。因此,需要对磁盘进行清理或扩容等操作,以避免不必要的问题和风险。
用find
命令查找系统中文件体积大于10M的文件
find / -type f -size +10M -exec ls -lh
该命令是在 Linux 系统中使用 find
命令查找单个文件体积大于10MB的文件,并使用 ls -lh
命令显示文件的详细信息。
命令参数解释如下:
find
: Linux 用于搜索文件的命令/
: 搜索的根目录,这里表示从根目录开始搜索-type f
: 指定搜索文件类型为文件(不包括目录、链接、设备文件等)-size +10M
: 指定搜索文件大小大于10MB的文件-exec
: 执行命令操作符ls -lh
: 显示搜索结果文件的详细信息{}
: 占位符,代表-exec
操作符指定的命令(这里是ls -lh
命令)应该在哪个位置插入find
命令搜索到的文件名;
: 命令执行的结束符,必须使用;
来表示-exec
命令已经执行完成
总体来说,该命令的含义是在指定的目录中查找文件,如果文件的大小大于10MB,则显示该文件的详细信息。
通过上述命令发现诸多类似binlog.000018
的文件
-rw-r----- 1 mysql mysql 1.1G Apr 21 10:42 /usr/local/mysql/var/binlog.000023 -rw-r----- 1 mysql mysql 1.1G Apr 15 13:22 /usr/local/mysql/var/binlog.000014 -rw-r----- 1 mysql mysql 1.1G Apr 18 05:34 /usr/local/mysql/var/binlog.000018
/usr/local/mysql/var/
目录一般是 MySQL 数据库服务的数据目录,用于存储 MySQL 数据库的各种数据文件,包括数据库文件、日志文件、临时文件等。这些文件是 MySQL 数据库服务运行的必要文件,也是任何一个 MySQL 数据库实例中必须的。
在 MySQL 中,数据目录通常包含以下几个重要子目录:
data
目录:用于存储 MySQL 的数据文件,包括数据库表结构、数据以及索引等。binlog
目录:用于存储 MySQL 二进制日志文件,这些日志文件记录了数据库中关键的修改操作,而且可以用于数据库备份和恢复。relaylog
目录:用于存储 MySQL 转发日志(Relay Log)文件,这些文件是 Slave 服务器上的 MySQL 实例使用的。tmp
目录:用于存储 MySQL 的临时文件,如排序和临时表。
通常情况下,管理员需要对 /usr/local/mysql/var/
目录进行备份,以确保 MySQL 数据库的重要数据得到保护。
/usr/local/mysql/var/
目录下类似binlog.000018
的文件总共有多少个,并且占用了多少空间?
find /usr/local/mysql/var/ -name "binlog.0*" -type f -exec du -m {} \; | awk '{ SUM += $1 } END { print "共有 " NR " 个文件,占用空间为 " SUM/1024 " GB" }'
使用 find
命令来查找 /usr/local/mysql/var/
目录下所有文件名以 binlog.0*
开头的文件
然后执行 du -m
命令来查看每个文件的大小
并使用 awk
命令计算符合条件的文件个数和总大小。最后输出时将总大小除以 1024
转换为 GB
单位。
/usr/local/mysql/var/
目录下类似binlog.000018
的文件1.首先停止 MySQL 服务器
systemctl stop mysql
2.删除所有大于 10MB 名称以 binlog.
开头的二进制日志文件,可以使用以下命令(命令执行完后,无返回结果)
find /usr/local/mysql/var/ -type f -name "binlog.*" -size +10M -delete
3.启动 MySQL 服务器
systemctl start mysql
再次查看/usr/local/mysql/var/
目录下类似binlog.000018
的文件是否已删掉
find /usr/local/mysql/var/ -name "binlog.0*" -type f -exec du -m {} \; | awk '{ SUM += $1 } END { print "共有 " NR " 个文件,占用空间为 " SUM/1024 " GB" }'
返回结果
为了一劳永逸的解决这个问题,决定将mysql日志功能关闭 (Debian 11 如何关闭mysql日志功能)
但是不推荐这么做!这样做,存在极大的风险.
binlog
目录:用于存储 MySQL 二进制日志文件,这些日志文件记录了数据库中关键的修改操作,而且可以用于数据库备份和恢复。找到MySQL的配置文件
/etc/my.cnf
当然有的系统是在
/etc/mysql/my.cnf
;或者干脆配置文件是mysql.cnf
或是mysqld.cnf
如果实在是不知道在哪里,可以用以下命令查询
find / -name mysql.cnf #在根目录及其子目录中搜索名为 mysql.cnf 的文件 find / -name mysqld.cnf #在根目录及其子目录中搜索名为 mysqld.cnf 的文件 find / -name 'my.cnf' #在根目录及其子目录中搜索名为 my.cnf 的文件。这是一个比较通用的命令,也是在寻找 MySQL 服务器配置文件时使用最多的命令。
这三个命令都可以用于搜索 MySQL
服务器的配置文件,但需要记住 MySQL
配置文件的确切名称为 my.cnf
编辑MySQL配置文件前,先将其备份
cp /etc/my.cnf /etc/my.cnf_backup
编辑MySQL配置文件
vi /etc/my.cnf
找到 [mysqld] 部分,如果不存在,则在文件的末尾添加该部分。
在 [mysqld] 部分的最下面添加以下三行代码
skip-log-bin # 禁用二进制日志功能 general-log=0 # 禁用一般查询日志 log-error=0 # 禁用错误日志
保存且退出MySQL配置文件编辑模式
重新启动 MySQL 服务器以使更改生效
systemctl restart mysql
再次查看磁盘使用情况
df -h #列出磁盘分区的总空间,已用空间、可用空间和使用率等 Filesystem Size Used Avail Use% Mounted on udev 982M 0 982M 0% /dev tmpfs 200M 460K 200M 1% /run /dev/sda2 39G 21G 17G 57% / tmpfs 1000M 0 1000M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock /dev/sda1 546M 80M 438M 16% /boot tmpfs 200M 0 200M 0% /run/user/1000
清理之前空间使用及占用率高达98%,清理空间后现在磁盘使用率已经降到57%
查看日志文件大小并按大小顺序排列,末了列出所有日志文件占用磁盘空间的大小
ls -lhS ; du -h
1.先将其备份
2.停止 Nginx 服务以防止正在写入的日志文件被删除。
停止 Nginx 服务命令
systemctl stop nginx
可以用
rm
命令将其删除,例
rm www.inthesun.life.log
删除日志文件后重启 Nginx 服务
systemctl start nginx
点击数:57