在太阳下
不管你喜不喜欢,高不高兴,爱与不爱;太阳照旧照耀着你!温暖着你!

Debian 11 磁盘清理

Debian 11 磁盘清理
TIME 2023-04-22 17:51

 

使用dudf命令查找和删除占用大量磁盘空间的文件或目录:

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 单位。

共有 16 个文件,占用空间为 15.1211 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" }'

返回结果

共有 2 个文件,占用空间为 0.00195312 GB

 

为了一劳永逸的解决这个问题,决定将mysql日志功能关闭 (Debian 11 如何关闭mysql日志功能)

但是不推荐这么做!这样做,存在极大的风险.

binlog 目录:用于存储 MySQL 二进制日志文件,这些日志文件记录了数据库中关键的修改操作,而且可以用于数据库备份和恢复。

找到MySQL的配置文件

一般根据系统的不同而不同,这里我的系统是Debian 11 所以位置在/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%

 

清理/home/wwwlogs目录Web服务器Nginx的访问日志
查看日志文件大小并按大小顺序排列,末了列出所有日志文件占用磁盘空间的大小

ls -lhS ; du -h
删除Nginx日志前
1.先将其备份
2.停止 Nginx 服务以防止正在写入的日志文件被删除。

停止 Nginx 服务命令

systemctl stop nginx
如何删掉Nginx日志文件?
可以用rm命令将其删除,例

rm www.inthesun.life.log

删除日志文件后重启 Nginx 服务

systemctl start nginx

点击数:57

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
Verified by MonsterInsights