1 inode与block
1.1 概念
- 文件数据包括元信息与实际数据
- 文件存储在硬盘上,硬盘的最小存储单位叫做"扇区",每个扇区存储512字节
- block:操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块" ( block )。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小 ,最常见的是4KB ,即连续八个扇区组成一个块
- inode:文件数据存储在"块"中,那么还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做 inode(索引节点),也叫i节点
- 一个文件必须占用一个 inode ,至少占用一个 block
1.2 inode的内容
1.2.1 包含文件的元信息
- 文件的字节数(字节占用多少空间,也称文件大小)
- 文件拥有者的 User ID(用户ID)
- 文件的 Group ID(组ID)
- 文件的读、写、执行权限
- 文件的时间戳(ctime、atime、mtime)
- 文件类型
- 链接数
- 有关文件的其他数据
inode不包含文件名
可以用 stat 命令,查看某个文件的 inode 信息
[root@fyr ~]# stat aa.txt
-
若复制,inode 会变化,新生成一个文件
-
若删除,节点号释放出来,节点满了之后,还可以存储文件
-
若移动,inode 不会变化
1.2.2 linux文件系统的三个时间戳
- ctime(change time):最后一次改变文件或目录(属性)的时间
- atime(access time):最后一次访问文件或目录的时间
- mtime(modify time):最后一次修改文件或目录(内容)的时间
1.2.3 目录文件结构
- inode不包含文件名。文件名是存放在目录当中的。 Linux 系统中一切皆文件,因此目录也是一种文件
- 每个 inode 都有一个号码,操作系统用 inode 号码来识别不同的文件
- linux系统内部不使用文件名,而使用 inode 来识别文件。
- 对于用户来说,文件名只是 inode 号码便于识别的别称,文件名和 inode 号码是一 一对应关系,每个 inode 号码对应一个文件名
1.2.4 inode的号码
- 表面上,用户通过文件名,打开文件
- 实际上,系统内部这个过程分成三步:
(1)系统找到这个文件名对应的inode号码
(2)通过inode号码 ,获取inode信息
(3)根据inode信息,找到文件数据所在的block,读出数据
一般 inode 表会占用文件系统磁盘空间1%
一个目录文件的内容就是一个该目录下所有文件目录项的列表
- 查看 inode 号码的方法
查看文件名对应的 inode 号码—Is -i
[root@fyr ~]# ls -i aa.txt
查看文件 inode 信息中的 inode 号码—stat
[root@fyr ~]# stat aa.txt
1.3 文件存储小结
1.3.1 硬盘分区后的结构
元信息:就是文件属性,包括用户、ID、大小、以及属性修改的时间
1.3.2 访问文件的简单流程
(1)当一个用户在 Linux 系统中试图访问一个文件时,系统会先根据文件名去查找它的 inode ,看该用户是否具有访问这个文件的权限
(2)如果有,就指向相对应的数据 block
(3)如果没有,就返回 Permission denied
1.4 inode的大小
- inod e也会消耗硬盘空间,所以格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据另一个是 inode 区,存放 inode 所包含的信息。每个 inode 的大小,般是128字节或256字节
- 通常情况下不需要关注单个 inode 的大小,而是需要重点关注 inode 总数。inode 的总数在格式化时就给定了,一般是每1KB或每2KB就设置一个inode
假定在一块1GB的硬盘中,每个 inode 节点大小为128字节,每1KB就设置一个 inode,那么 inode table的大小就会达到128MB,占整块硬盘12.8% - 执行 “df-i” 命令即可查看每个硬盘分区对应的的 inode 总数和已经使用的 inode 数量
1.5 inode的特点
由于 inode 号码与文件名分离,导致一些 Unix/Linux 系统具有以下的现象
- 当文件名包含特殊字符,可能无法正常删除文件,直接删除 inode,也可以删除文件
删除inode号的方法:
方法一: find 文件位置 -inum inode号码 -exec rm -i {} \;
方法二: find 文件位置 -inum inode号码 -delete
[root@fyr test]# ls -i /test/aa.txt
67 /test/aa.txt
[root@fyr test]# find /test/ -inum 67 -delete //方法一
[root@fyr test]# ls /test/
[root@fyr test]# touch 2.txt
[root@fyr test]# ls -i 2.txt
68 2.txt
[root@fyr test]# find /test/ -inum 68 -exec rm -i {} \; //方法二
rm:是否删除普通空文件 "/test/2.txt"?y
- mv移动或重命名文件时,只改变文件名,不影响 inode 号码(这里指的是非挂载磁盘)
- 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名
- 文件数据被修改保存后,会生成一个新 inode 号码
- cp 命令与 inode:分配一个空闲的inode号,在 inode 表中生成新条目在目录中创建一个目录项,将名称与 inode 编号关联拷贝数据生成新的文件
- rm 命令与 inode:链接数递减,从而释放的 inode 号可以被重用把数据块放在空闲列表中,删除目录项,数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
2 硬链接与软链接
2.1 链接文件分类
软链接 | 硬链接 | |
---|---|---|
删除原始文件后 | 失效 | 仍旧可用 |
使用范围 | 适用于文件或目录 | 只可用于文件 |
保存位置 | 与原始文件可以位于不同的文件系统中 | 必须与原始文件在同一个文件系统(如一个Linux分 区)内 |
硬链接
ln 源文件 目标位置
软连接
ln -s 源文件或目录... 链接文件或目标位置
3 恢复误删除的文件—EXT3
EXT类型文件恢复
extundelete 是一个开源的 Linux 数据恢复工具,支持 ext3、ext4 文件系统。ext4 只能在 CentOS6 版本恢复)
第一步:使用 fdisk 创建分区 /dev/sdb1,格式化 ext3 文件系统
[root@fyr ~]# fdisk /dev/sdb
[root@fyr ~]# partprobe /dev/sdb
[root@fyr ~]# mkfs.ext3 /dev/sdb1
[root@fyr ~]# mkdir /test
[root@fyr ~]# mount /dev/sdb1 /test
[root@fyr ~]# df -hT
第二步:安装依赖包
[root@fyr ~]# yum -y install e2fsprogs-devel e2fsprogs-libs gcc gcc-c++
第三步:编译安装 extundelete
[root@fyr ~]# cd /test
[root@fyr test]# wget http://nchc,d1,sourceforge,net/project/extundelete/extundelete/0.2.4/extundelete-0.2.4,tar.bz2
或者把已有的包直接拉进来
[root@fyr test]# tar jxvf extundelete-0.2.4.tar.bz2 -C /opt
[root@fyr opt]# cd extundelete-0.2.4/
[root@fyr extundelete-0.2.4]# ./configure --prefix=/usr/local/extundelete && make && make install或
[root@fyr extundelete-0.2.4]# ./configure && make && make install
[root@fyr extundelete-0.2.4]# ln -s /usr/local/extundelete/bin/* /usr/bin/
第四步:模拟删除并执行恢复操作
[root@fyr ~]# cd /test
[root@fyr test]# echo a>a
[root@fyr test]# echo a>b
[root@fyr test]# echo a>c
[root@fyr test]# echo a>d
[root@fyr test]# ls
[root@fyr test]# extundelete /dev/sdb1 --inode 2
#查看文件系统/dev/sdb1下存在哪些文件,i节点是从2开始的,2代表该文件系统最开始的目录。
[root@fyr test]# rm -rf a b
[root@fyr ~]# umount /test/
[root@fyr ~]# extundelete /dev/sdb1 --restore-all //恢复/dev/sdc1文件系统下的所有内容
#在当前目录下会出现一个RECOVERED_FILES/目录,里面保存了已经恢复的文件
[root@fyr ~]# ls RECOVERED FILES/
4 恢复误删除的文件—xfs
#xfsdump命令格式
xfsdump -f 备份存放位置 要备份的路径或设备文件
#xfsrestore命令格式
xfsrestore -f 恢复文件的位置 存放恢复后文件的位置
4.1 xfs类型文件备份和恢复
- CentOS7 系统默认采用 xfs 类型的文件,xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。
- xfsdump 的备份级别有两种:0表示完全备份;1-9表示增量备份。xfsdump 的备份级别默认为0。
4.2 xfsdump命令常用的选项
-f | 指定备份文件目录 |
---|---|
-L | 指定标签session label |
-M | 指定设备标签media labe… |
-s | 备份单个文件,-s后面不能直接跟路径 |
4.3 xfadump使用限制
- 只能备份已挂载的文件系统
- 必须使用 root 的权限才能操作
- 只能备份 XFS 文件系统
- 备份后的数据只能让 xfsrestore 解析
- 不能备份两个具有相同 UUID 的文件系统(可用 blkid 命令夜看)
4.4 实例
第一步:使用 fdisk 创建分区 /dev/sdb2,格式化 xfs 文件系统
[root@fyr ~]# fdisk /dev/sdb
[root@fyr ~]# partprobe /dev/sdb
[root@fyr ~]# mkfs.xfs /dev/sdb2 mkfs.xfs [-f] /dev/sdb2
[root@fyr ~]# mkdir /data
[root@fyr ~]# mount /dev/sdb2 /data/
[root@fyr ~]# cd /data
[root@fyr data]# cp /etc/passwd ./
[root@fyr data]# mkdir test
[root@fyr data]# touch a b c d
第二步:使用 xfsdump 命令备份整个分区
[root@fyr data]# rpm -qa | grep xfsdump
[root@fyr data]# yum install -y xfsdump
[root@fyr data]# xfsdump -f /opt/dump_sdb2 /dev/sdb2 -L dump_sdb2 -M sdb2
第三步:模拟数据丢失并使用 xfsrestore 命令恢复文件
方法一:
[root@fyr data]# rm -rf ./*
[root@fyr data]# xfsrestore -f /opt/dump_sdb2 /data/
方法二:
[root@fyr data]# rm -rf /opt/dump_sdb2
[root@fyr data]# xfsdump -f /opt/dump_sdb2 /dev/sdb2
-> dump_sdb2
-> sdb2
5 分析日志文件
内核及系统日志由系统服务 rsyslog 统一管理,主配置文件为 /etc/rsysloq.conf
Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录 /var/log/ 下
vim /etc/rsyslog.conf //查看rsyslog.conf配置文件
- *.info 表示 info 等级及以上的所有等级的信息都写到对应的日志文件里
- mail.none 表示某事件的信息不写到日志文件里(这里比如是邮件)
日志的功能
- 用于记录系统、程序运行中发生的各种事件
- 通过阅读日志,有助于诊断和解决系统故障
5.1 日志文件的分类
- 内核及系统日志
由系统服务 rsyslog 统一进行管理,日志格式基本相似 - 用户日志
记录系统用户登录及退出系统的相关信息 - 程序日志
由各种应用程序独立管理的日志文件,记录格式不统一
5.2 主要日志文件介绍
内核及公共消息日志 | /var/log/messages |
---|---|
计划任务日志 | /var/log/cron |
系统引导日志 | /var/log/dmesg |
邮件系统日志 | /var/log/maillog |
用户登录日志 | /var/log/lastlog 、/var/log/secure、/var/log/wtmp、/var/run/btmp |
- /var/log/messages:记录 Linux 内核消息及各种应用程序的公共日志信息,包括启动、IO 错误、网络错误、程序故障等。
对于未使用独立日志文件的应用程序或服务,一般都可以从该日志文件中获得相关的事件记录信息 - /var/log/cron:记录 crond 计划任务产生的事件信息
- /var/log/dmesg:记录 Linux 系统在引导过程中的各种事件信息
- /var/log/maillog:记录进入或发出系统的电子邮件活动
- /var/log/secure:记录用户认证相关的安全事件信息
- /var/log/lastlog:记录每个用户最近的登录事件。二进制格式
- /var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件。进制格式
- /var/run/btmp:记录失败的、错误的登录尝试及验证事件。二进制格式
5.3 内核及系统日志
由系统服务 rsyslog 统一管理
软件包:rsyslog-7.4.7-16 el7.×86_64
主要程序:/sbin/rsyslogd
配置文件:/etc/rsyslog.conf
5.3.1 日志记录的一般格式
公共日志 /var/log/mesaagea 文件的记录格式
- 时间标签:消息发出的日期和时间
- 主机名:生成消息的计算机的名称
- 子系统名称:发出消息的应用程序的名称
- 消息:消息的具体内容。
- 程序自己维护日志记录,httpd 网站服务程序使用两个日志文件:
access_log:记录客户访问事件
error_log:记录错误事件
5.3.2 日志消息等级
Linux系统内核日志消息的优先级别(数字等级越小,优先级越高,消息越重要)
级别 | 消息 | 级别 | 具体描述 |
---|---|---|---|
0 | EMERG | 紧急 | 会导致主机系统不可用的情况 |
1 | ALERT | 警告 | 必须马上采取措施解决的问题 |
2 | CRIT | 严重 | 比较严重的情况 |
3 | ERR | 错误 | 运行出现错误 |
4 | WARNING | 提醒 | 可能影响系统功能,需要提醒用户的重要事件 |
5 | NOTICE | 注意 | 不会影响正常功能,但是需要注意的事件 |
6 | INFO | 信息 | 一般信息 |
7 | DEBUG | 调试 | 程序或系统调试信息等 |
5.4 用户日志分析
保存了用户登录、退出系统等相关信息
- /var/log/lastlog:最近的用户登录事件
- /var/log/wtmp:用户登录、注销及系统开、关机事件
- /var/run/utmp:当前登录的每个用户的详细信息
- /var/log/secure:与用户验证相关的安全性事件
5.4.1 查询当前登录的用户情况—users、who、w
5.4.2 查询用户登录的历史记录—last、lastb
last命令—用于查询成功登录到系统的用户记录
lastb命令—用于查询登录失败的用户记录
5.5 程序日志分析
程序日志由相应的应用程序独立进行管理
- Web 服务:/var/log/httpd/
access_log ——记录客户访问事件
error_log ——记录错误事件 - 代理服务:/var/log/squid/
access.log、cache.log - FTP服务:/var/log/xferlog
- 分析工具
文本查看、grep 过滤检索、Webmin 管理套件中查看
awk、sed 等文本过滤、格式化编辑工具
Webalizer、Awstats 等专用日志分析工具
6 日志管理
- 及时做好备份和归档
- 延长日志保存期限
- 控制日志访问权限
日志中可能会包含各类敏感信息,如账户和口令等 - 集中管理日志
将服务器的日志文件发到统一的日志文件服务器
便于日志信息的统一收集、 整理和分析
杜绝日志信息的意外丢失、恶意篡改或删除
6.1 系统日志介绍
在现实生活中,记录日志也非常重要,比如银行的转账记录,飞机上的黑盒子,那么将系统和应用发生的事件记录至日志中,以助于排错和分析使用
日志记录的内容包括
- 历史事件:时间,地点,人物,事件
- 日志级别:事件的关键性程度,Loglevel
6.2 系统日志服务—sysklogd
CentOS 5 之前版本采用的日志管理系统服务
- syslogd: system application 记录应用日志
- klogd: linux kernel 记录内核日志
事件记录格式
日期时间 主机 进程[pid]: 事件内容
C/S 架构:通过 TCP 或 UDP 协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理
6.3 系统日志服务—rsyslog
rsyslog 是CentOS 6 以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管 rsyslog 最初是常规的 syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。
当应用有限的处理时,RSYSLOG 每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的。
http://www.rsyslog.com/
官网
rsyslog 特性
- 多线程
- UDP, TCP, SSL, TLS, RELP
- MySQL, PGSQL, Oracle 实现日志存储
- 强大的过滤器,可实现过滤记录日志信息中任意部分
- 自定义输出格式
- 适用于企业级中继
[root@fyr ~]# rpm -qi rsyslog
6.3.1 系统日志术语
- facility:设施,从功能或程序上对日志进行归类
#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定议的分类
local0-local7
- Priority 优先级别,从低到高排序
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
- 参看帮助: man 3 syslog,man logger
[root@fyr ~]# yum -y install man-pages
[root@fyr ~]# man 3 syslog
日志等级
等级名称 | 说 明 |
---|---|
debug (LOG_DEBUG) | 一般的调试信息说明 |
info (LOG_INFO) | 基本的通知信息 |
notice (LOG_NOTICE) | 普通信息,但是有一定的重要性 |
warning(LOG_WARNING) | 警吿信息,但是还不会影响到服务或系统的运行 |
error(LOG_ERR) | 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了 |
crit (LOG_CRIT) | 临界状况信思,比err等级还要严® |
alert (LOG_ALERT) | 状态信息,比crit等级还要严重,必须立即采取行动 |
emerg (LOG_EMERG) | 疼痛等级信息,系统已经无法使用了 |
* | 代表所有日志等级。比如,“authpriv.*”代表amhpriv认证信息服务产生的日志,所有的日志等级都记录 |
服务名称
服务名称 | 说 明 |
---|---|
auth(LOG AUTH) | 安全和认证相关消息 (不推荐使用authpriv替代) |
authpriv(LOG_AUTHPRIV) | 安全和认证相关消息(私有的) |
cron (LOG_CRON) | 系统定时任务cront和at产生的日志 |
daemon (LOG_DAEMON) | 与各个守护进程相关的曰志 |
ftp (LOG_FTP) | ftp守护进程产生的曰志 |
kern(LOG_KERN) | 内核产生的曰志(不是用户进程产生的) |
Iocal0-local7 (LOG_LOCAL0-7) | 为本地使用预留的服务 |
lpr (LOG_LPR) | 打印产生的日志 |
mail (LOG_MAIL) | 邮件收发信息 |
news (LOG_NEWS) | 与新闻服务器相关的日志 |
syslog (LOG_SYSLOG) | 存syslogd服务产生的曰志信息(虽然服务名称己经改为reyslogd,但是很多配罝依然沿用了 syslogd服务的,所以这里并没有修改服务名称) |
user (LOG_USER) | 用户等级类别的日志信息 |
uucp (LOG_UUCP> | uucp子系统的日志信息,uucp是早期Linux系统进行数据传递的协议,后来 也常用在新闻组服务中 |
6.3.2 rsyslog 相关文件
- 程序包:rsyslog
- 主程序:/usr/sbin/rsyslogd
- CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
- CentOS 7,8:/usr/lib/systemd/system/rsyslog.service
- 配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
- 库文件: /lib64/rsyslog/*.so
6.3.3 rsyslog 配置文件
/etc/rsyslog.conf 配置文件格式:由三部分组成
- MODULES:相关模块配置
- GLOBAL DIRECTIVES:全局配置
- RULES:日志记录相关的规则配置
[root@fyr ~]# rpm -ql rsyslog |grep imuxsock
/usr/lib64/rsyslog/imuxsock.so
RULES配置格式:
facility.priority;
#分类 优先级
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理
通常的日志文件的格式:
日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下
事件产生的日期时间 主机 进程(pid):事件内容
[root@fyr ~]# tail /var/log/messages
6.4 ELK
ELK:由 Elasticsearch, Logstash, Kibana三个软件组成
- 非关系型分布式数据库基于 apache 软件基金会 jakarta 项目组的项目 lucene
- Elasticsearch 是个开源分布式搜索引擎,可以处理大规模日志数据,比如:Nginx、Tomcat、系统日志等功能
- Logstash 对日志进行收集、分析,过滤,并将其存储供以后使用
- Kibana 可以提供的日志分析友好的 Web 界面
6.5 实际操作,将ssh服务的日志单独设置
第一步:
进入ssh的配置文件,将ssh配置成使用local6
进入rsyslog配置文件,添加自己的文件位置
[root@localhost ~]#vim /etc/rsyslog.conf
#74行添加自己的文件位置
local6.* /var/log/sshd.log
[root@fyr ~]# vim /etc/ssh/sshd_config
//修改ssh配置文件,32下一行添加自己的自定义
32 #SyslogFacility AUTHPRIV
33 SyslogFacility LOCAL6
#local 0-7是自定义的
修改过的都要重启服务
第二步: 重启服务
[root@fyr ~]# systemctl restart sshd
[root@fyr ~]# systemctl restart rsyslog
第三步:打开另一台主机 远程连接本机
####################另一台主机#########################
[root@fyr ~]# ssh 192.168.16.16
第四步:查看本机日志记录
#####################回到本机############################
[root@fyr ~]# tail -f /var/log/secure //查看ssh服务的日志位置
6.6 网络日志(远程日志功能)
网路日志,通过网络将本地的日志远程备份到另一台机器。这样,就算本机系统崩溃,我们可以查看另一台机器备份的日志,来排查故障。
备份的大体过程:如果需要将服务器A的日志备份到服务器B,则A为发送方,B为接收方。则A作为发送方需要在配置文件中添加接收方B的IP地址。B作为接收方需要开启端口来接收发送方A发的日志文件。
[root@fyr ~]# rpm -ql rsyslog | grep tcp
[root@fyr ~]# rpm -ql rsyslog | grep udp
#开启日志的远程传输功能在192.168.16.16
###################发送方###############
[root@fyr ~]# systemctl stop firewalld
[root@fyr ~]# setenforce 0
#在192.168.16.16 上设置发送到哪台主机去
[root@fyr ~]# vim /etc/rsyslog.conf //修改配置文件
54 *.info;mail.none;authpriv.none;cron.none /var/log/messages
#复制54行 改成ip地址
55 *.info;mail.none;authpriv.none;cron.none @@192.168.16.18
如果修改的是udp @192.168.16.18
如果要想指定端口 @192.168.16.18:端口号
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# logger "this is test my fyr" //测试,写日志进去
###################接收方###############
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# vim /etc/rsyslog.conf
#打开19 20 行
19 #$ModLoad imtcp
20 #$InputTCPServerRun 514
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]#ss -ntap |grep 514 //查看514端口是否打开
###########接收方测试是否能接收到发送方的日志############
[root@localhost ~]# tail -f /var/log/messages
查看TCP和UDP文件
第一步:发送方关闭防火墙与selinux
[root@fyr ~]# systemctl stop firewalld
[root@fyr ~]# setenforce 0
第二步:发送方配置输出日志及接收方IP地址
[root@fyr ~]# vim /etc/rsyslog.conf
第三步:重启服务并测试(使用logger写入一条测试日志)
[root@fyr ~]# systemctl restart rsyslog
[root@fyr ~]# logger "this is test my fyr"
第四步:接收方关闭防火墙与selinux
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
第五步:接收方开启TCP以及端口514
[root@localhost ~]# vim /etc/rsyslog.conf
第六步:重启服务并查看端口是否被打开
[root@localhost ~]# systemctl restart rsyslog
[root@localhost ~]# ss -ntap |grep 514
第七步:查看接收方是否能收到发送方的日志记录
[root@localhost ~]# tail -f /var/log/messages