Linux垃圾清理

linux垃圾清理

起因是阿里云上面一台很穷的机器,大早上来看了下,搭在那服务器上面的grafana直接就登不上了,登服务器看了下日志,磁盘满了,因为就50G的空间,上面还有个influxdb占了大头,在重新申请扩充磁盘空间之前,只能先看看能删啥了。

Linux垃圾

坊间有句话:Linux不像windows,Linux没有垃圾。对这句话,只能笑笑。。

首先df -h看一下哪个分区满了:

1
2
3
4
5
6
7
8
[root@izuf633r5fhkmlfxl47zbkz log]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 50G 43G 28M 100% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 500K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
tmpfs 783M 0 783M 0% /run/user/1002

可以看到/dev/vda1分区基本已经使用100%了,这个分区是挂载在/目录下,所以,需要清理的也就是/目录下的垃圾。

进根目录,一层一层的看文件大小并按文件大小倒序排列:

1
2
3
cd /

du -sh * | sort -h

找到最大的文件夹/文件,进入对应的文件夹,一层一层的筛选
基本上可以找到/var/log这个文件夹,这个文件夹中有很大的日志文件,尤其是/var/log/messages文件以及/var/log/journal文件夹,这两个都是系统操作日志的记录,尤其是journal文件夹,里面存的大量的日志,这台服务器的日志有4G,需要清理的就是这个文件夹了。

journalctl

linux继承unix,也有类似syslog的记录,linux有个journald的日志解决方案,说实话,我对linux底层不是非常了解,所以这个日志系统当前也没多少时间去深究,只能停留在使用上。
journald日志系统有个读取日志的工具:journalctl,这个工具应该算是经常用到的一个,经常搭建环境时候出错需要:journalctl -xe查看详细日志

关于journalctl这个工具的详细介绍这边不说,提供官方地址,不行就直接--help

journalctl各参数详细介绍

其中可以找到一个参数:--vacuum-size=, --vacuum-time=, --vacuum-files=
官方解释:

1
Removes the oldest archived journal files until the disk space they use falls below the specified size (specified with the usual "K", "M", "G" and "T" suffixes), or all archived journal files contain no data older than the specified timespan (specified with the usual "s", "m", "h", "days", "months", "weeks" and "years" suffixes), or no more than the specified number of separate journal files remain. Note that running --vacuum-size= has only an indirect effect on the output shown by --disk-usage, as the latter includes active journal files, while the vacuuming operation only operates on archived journal files. Similarly, --vacuum-files= might not actually reduce the number of journal files to below the specified number, as it will not remove active journal files.

这三个参数,可以帮助我们删除journald的日志

用法:
journalctl --vacuum-size=1G 指定日志文件最大占据空间为1G
journalctl --vacuum-time=1years 指定日志文件保存时间为1年

更多用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#查看所有日志(默认情况下 ,只保存本次启动的日志)
$ sudo journalctl

#查看内核日志(不显示应用日志)
$ sudo journalctl -k

#查看系统本次启动的日志
$ sudo journalctl -b
$ sudo journalctl -b -0

#查看上一次启动的日志(需更改设置)
$ sudo journalctl -b -1

#查看指定时间的日志
$ sudo journalctl --since="2012-10-30 18:17:16"
$ sudo journalctl --since "20 min ago"
$ sudo journalctl --since yesterday
$ sudo journalctl --since "2015-01-10" --until "2015-01-11 03:00"
$ sudo journalctl --since 09:00 --until "1 hour ago"

#显示尾部的最新10行日志
$ sudo journalctl -n

#显示尾部指定行数的日志
$ sudo journalctl -n 20

#实时滚动显示最新日志
$ sudo journalctl -f

#查看指定服务的日志
$ sudo journalctl /usr/lib/systemd/systemd

#查看指定进程的日志
$ sudo journalctl _PID=1

#查看某个路径的脚本的日志
$ sudo journalctl /usr/bin/bash

#查看指定用户的日志
$ sudo journalctl _UID=33 --since today

#查看某个 Unit 的日志
$ sudo journalctl -u nginx.service
$ sudo journalctl -u nginx.service --since today

#实时滚动显示某个 Unit 的最新日志
$ sudo journalctl -u nginx.service -f

#合并显示多个 Unit 的日志
$ journalctl -u nginx.service -u php-fpm.service --since today

#查看指定优先级(及其以上级别)的日志,共有8级
# 0: emerg
# 1: alert
# 2: crit
# 3: err
# 4: warning
# 5: notice
# 6: info
# 7: debug
$ sudo journalctl -p err -b

#日志默认分页输出,--no-pager 改为正常的标准输出
$ sudo journalctl --no-pager

#以 JSON 格式(单行)输出
$ sudo journalctl -b -u nginx.service -o json

#以 JSON 格式(多行)输出,可读性更好
$ sudo journalctl -b -u nginx.serviceqq
-o json-pretty

#显示日志占据的硬盘空间
$ sudo journalctl --disk-usage

#指定日志文件占据的最大空间
$ sudo journalctl --vacuum-size=1G

#指定日志文件保存多久
$ sudo journalctl --vacuum-time=1years

附上一篇关于systemd命令介绍的博客:

systemd命令

完~

文章目录
  1. Linux垃圾
  2. journalctl
|