linux系统日志文件的分析和管理

一、inode与inode表

linux系统中的每一个文件都有文件对应的文件数据 ,文件数据包括元数据(文件的属性信息) 与实际数据,元数据 存放在indoe表中。

  • 文件数据包括元信息与实际数据。
  • 文件存储在硬盘上,硬盘最小存储单位是扇区,每个扇区存储512字节连续的八个扇区组成了一个block块,是文件存取的最小单位,操作系统在读取硬盘的时候,就是一个block块,一个block块的读取(八个扇区一读,也就是4k一读)

1. inode(索引节点)

  • 中文译名为"索引节点",也叫 i 节点
  • 用于存储文件元信息

2 inode表:

文件系统中的一种数据结构,用于存储关于文件和目录的元数据信息。每个文件或目录在文件系统中都有一个对应的 inode

文件数据包括实际数据与元信息(类似文件属性)。文件数据存储在block块中,存储文件元信息(比如文件的创建者、创建日期、文件大小、文件权限等)的区域就叫做inode表。 一个文件必须占用一个inode至少占用一个block(这也是du和ls命令查看的区别)

每一个inode表记录对应的保存了以下信息:

  1. inode number 节点号
  2. 文件类型
  3. 权限
  4. UID
  5. GID
  6. 链接数(指向这个文件名路径名称个数)
  7. 该文件的大小和不同的时间戳
  8. 指向磁盘上文件的数据块指针
  9. 有关文件的其他数据

inode不包含文件名。文件名是存放在目录文件夹当中的。Linux 系统中一切皆文件,因此目录也是一种文件。

每个inode都有一个号码,操作系统用inode号码来识别不同的文件。Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称,文件名和inode号码是一一对应关系,每个inode号码对应一个或多个文件名,inode号是在分区时被固定分配多少个的,所以是可以被消耗完的,当查看磁盘空间有剩余却创建不了文件时,有可能是文件过多inode号被用完,这时find ./ -empty 可以查找空文件并删除,另外并不是i

当用户在Linux系统中试图访问一个文件时,系统会先根据文件名去查找它对应的inode号码:通过inode号码,获取inode信息;根据inode信息,看该用户是否具有访问这个文件的权限;如果有,就指向相对应的数据block,并读取数据。

在同一文件系统中inode是唯一的。在不同文件系统中inode可能会一样

inode 表中存储了诸如文件大小、文件权限、文件所有者、文件创建时间、文件修改时间等元数据信息。它还包含了指向实际文件数据的指针,可以快速定位和访问文件的内容

当文件系统创建一个新文件时,会为该文件分配一个唯一的 inode 号,并在 inode 表中创建一个对应的记录。这个 inode 号可以用来标识并访问该文件。

通过使用 inode 表,文件系统可以高效地管理文件和目录,而不需要依赖文件名来进行查找和定位。这种基于 inode 的文件系统在许多操作系统中广泛使用,包括 Linux 中的 ext 文件系统家族。

总结起来,inode 表是文件系统中的一个数据结构,用于存储文件和目录的元数据信息,以及指向文件数据的指针,使得文件系统可以高效地管理和访问文件。

PS:

2.1 如何查看inode号

命令:

查看文件名对应的inode号码

  1. ls -i 文件名/目录(是目录时必须是绝对路径)

查看文件inode信息中的inode号码

  1. stat 文件名

补充:du -i可以查看文件系统的inode号

2.命令和inode号之间的关系

cp 命令:

  • 分配一个空闲的inode号,在inode表中生成新条目
  • 在目录中创建一个目录项,将名称与inode编号关联
  • 拷贝数据生成新的文件

mv命令:

  • 如果mv命令的目标和源在同一设备,

    不影响inode表(除时间戳)或磁盘上的数据位置;

    系统会删除旧的目录对应关系,新建目录对应关系。

rm 命令:

  • 硬链接数递减,从而释放的inode号可以被重用
  • 把数据块放在空闲列表中
  • 删除目录项
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖

3.文件的三条时间戳(元数据中的一部分)

  • 最近访问atime(access time):最后一次访问文件的时间(使用echo追加内容不会变,因为没有打开文件)
  • 最近更改mtime(modify):最后一次更改文件内容的时间。更改完内容之后,ctime也会改变
  • 最近改动ctime(change time):最后一次改变文件元信息(文件或目录属性)的时间。改变后,mtime不变

4.目录

目录是个特殊文件,目录文件的内容保存了此目录中文件的列表及inode number对应关系,目录文件本身的大小,是根据所含目录项统计的,不是目录内所有子文件的大小总和

文件引用说起来是两个方式:

一个是 inode号

另一个是通过文件名来引用一个文件,但Linux系统内部不使用文件名,而使用inode号码来识别文件,对于系统来说,文件名只是inode号码便于识别的别称,所以实际上就是一个,通过inode号,对用户来说是两种

一个目录是目录下的文件名和文件inode号之间的映射

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名以及该文件名对应的inode号码

5.备份与恢复(xfs类型)

备份分为两种

  1. 全量备份:将文件内容进行备份
  2. 增量备份:将文件新加入的内容,全量备份以外的内容备份

在使用xfs文件系统的系统中,可以通过安装 xfsdumpxfsrestore工具进行备份

列举xfsdump

安装命令:

复制代码
yum install -y xfsdump

xfsdump 按照inode 顺序备份一个 xfs 文件系统。xfsdump 的备份级别有两种:

  1. 0 表示完全备份
  2. 1-9 表示增量 备份

xfsdump 的备份级别默认为 0

使用 xfsdump 时,需要注意以下的几个限制:

  1. 只能备份已挂载的文件系统
  2. 必须使用root权限才能操作
  3. 只能备份xfs文件系统
  4. 备份后的数据只能用xfsrestore解析
  5. 不能备份两个相同uuid号的文件系统(blkid查看)

备份命令:xfsdump 选项

选项 说明
-f 指定备份文件目录
-L 指定标签 session label
-M 指定设备标签 media label
-s 备份单个文件

二、日志

内核及系统日志由系统服务 rsyslog统一管理,根据其主配置文件 /etc/rsyslog.conf

Linux 操作系统本身和大部分服务器程序的日志文件都默认放在目录/var/log/

1.日志的功能及其分类

1.1日志的功能

记录系统、程序运行中发生的各种事件,当系统出现故障时,通过阅读日志,有助于诊断和解决系统故障。

1.2、日志文件的分类

  1. 内核及系统日志:由系统服务rsyslog统一进行管理,日志格式基本相似,其主配置文件是 /etc/rsyslog.conf

  2. 用户日志:记录系统用户登录及退出系统的相关信息

  3. 程序日志:由各种应用程序独立管理的日志文件,记录格式不统一

    • Web服务:/var/log/httpd/  access_logerror_log
    • 代理服务:/var/log/squid  access.logcache.log
    • FTP服务:/var/log/xferlog

2.常见的日志文件及其保存位置

日志文件一般默认位于:/var/log 目录下

日志文件位置 日志文件说明
/var/log/messages内核和公共日志 它是核心系统日志文件,其中包含了系统启动时的引导信息,以及系统运行时的其他状态消息。I/O 错误、网络错误和其他系统错误都会记录到此文件中。其他信息,比如某个人的身份切换为 root,已及用户自定义安装软件的日志,也会在这里列出。
/var/log/cron 计划任务日志 记录与系统定时任务相关的曰志
/var/log/dmesg 系统引导日志 记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息
/var/log/maillog 邮件日志 记录邮件信息的曰志
用户日志
/var/log/lastlog 记录系统中所有用户最后一次的登录时间的曰志。这个文件也是二进制文件.不能直接用Vi 查看。而要使用lastlog命令查看
/var/log/secure 记录验证和授权方面的倍息,只要涉及账户和密码的程序都会记录,比如系统的登录、ssh的登录、su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登陆、注销信息,同时记录系统的启动、重启、关机事件。同样,这个文件也是二进制文件.不能直接用Vi查看,而要使用last命令查看
/var/tun/ulmp 记录当前已经登录的用户的信息。这个文件会随着用户的登录和注销而不断变化,只记录当前登录用户的信息。同样,这个文件不能直接用Vi查看,而要使用w、who、users等命令查看

3.日志文件的格式

日志文件的格式包含以下 4 列:

  • 事件产生的时间(什么时候)
  • 产生事件的服务器的主机名
  • 产生事件的服务名或程序名(做了什么)
  • 事件的具体信息 (谁)

简单说就是谁在什么主机上,在什么时候,做了什么

4.内核及公共消息日志

内核及大多数系统消息被记录到公共日志文件/var/log/messages 中,而其他一些程序消息被记录到各自独立的日志文件中,此外日志消息还能够记录到特定的存储设备中,或者直接发送给指定用户。

对于rsyslog 服务统一管理的大部分日志文件,使用的日志记录格式基本上是相同的(详见3.日志文件的格式)

由系统服务 rsyslog 统一管理,根据其主配置文件 /etc/rsyslog.conf。

  • 软件包:rsyslog-8.24.0-12.el7.x86_64 (可使用 rpm -q 命令查看)
  • 主要程序:/sbin/rsyslogd
  • 配置文件:/etc/rsyslog.conf (可使用 rpm -qc 命令查看)

5.用户日志分析

保存了用户登录、退出系统等相关信息:

  • /var/log/lastlog:最近都用户登录事件。二进制文件,使用 lastlog命令查看。
  • /var/log/secure:与用户验证有关的安全性事件。
  • /var/log/wtmp:用户登录、注销,及系统开、关机事件。二进制文件,使用 last 命令查看。
  • /var/run/utmp:当前登录的每个用户的详细信息。二进制文件,使用w、who、users等命令查看。

5.1 users 查询最近三次登录的用户信息

users 命令只是简单地输出当前登录的用户名称,每个显示的用户名对应一个登录会话。 如果一个用户有不止一个登录会话,那他的用户名将显示与其相同的次数。

5.2 who 查看当前登录的用户、终端、登录时间、IP地址

who命令用于报告当前登录到系统中的每个用户的信息。使用该命令,系统管理员可

以查看当前系统存在哪些不合法用户,从而对其进行审计和处理。who 的默认输出包括用

户名、终端类型、登录日期及远程主机

5.3 w 查看当前登录的用户、终端、IP地址、登录时间、占用CPU的情况、进程等

w 命令用于显示当前系统中的每个用户及其所运行的进程信息,比 users、who 命令的 输出内容要丰富一些。

各字段:

  • USER:登录的用户名。
  • TTY:用户当前所使用的终端。
  • FROM:登录用户的IP地址或主机名。
  • LOGIN@:登录时间。
  • IDLE:用户在终端处于空闲状态的时间。
  • JCPU:用户所有进程的累计CPU时间。
  • PCPU:当前正在运行的进程的CPU时间。
  • WHAT:用户正在做的事情(命令或程序的简短描述)

5.4 last 读取 /var/log/wtmp 文件,显示登录系统的用户信息

last 命令用于查询成功登录到系统的用户记录,最近的登录情况将显示在最前面。通过 last 命令可以及时掌握 Linux 主机的登录情况,若发现未经授权的用户登录过,则表示当前 主机可能已被入侵。

各字段:

  • root 登录的用户名
  • pts/0 用户所使用的终端。
  • 2023-07-31 02:29 登录时间和日期。
  • 192.168.2.103 登录用户的IP地址或主机名。

5.5 lastb 读取 /var/log/btmp 文件,显示登入系统失败的用户信息

lastb 命令用于查询登录失败的用户记录,如登录的用户名错误、密码不正确等情况都将记录在案。登录失败的情况属于安全事件,因为这表示可能有人在尝试猜解你的密码。除 了使用 lastb 命令查看以外,也可以直接从安全日志文件/var/log/secure 中获得相关信息。

6.程序日志分析

程序日志:由各种应用程序独立管理的日志文件,记录格式不统一

  • Web服务:/var/log/httpd/  access_logerror_log
  • 代理服务:/var/log/squid  access.logcache.log
  • FTP服务:/var/log/xferlog

一般查看文本使用grep过滤命令,awksed等文本过滤、格式化编辑工具,分析日志使用WebalizerAwstats等专用日志分析工具

三、系统日志管理

1. sysklogd 系统日志服务

CentOS 5 之前版本采用的日志管理系统服务

  • syslogd: system application 记录应用日志
  • klogd: linux kernel 记录内核日志

事件记录格式:

日期时间 主机 进程[pid]: 事件内容

C/S架构:

通过TCP或UDP协议的服务完成日志记录传送,将分布在不同主机的日志实现集中管理

2.rsyslog 系统日志服务

rsyslog是CentOS 6以后版本的系统管理服务:它提供了高性能,出色的安全性和模块化设计。尽管rsyslog最初是常规的syslogd,但发展成为一种瑞士军刀式的记录工具,能够接受来自各种来源的输入,并将其转换,然后输出到不同的目的地。

当应用有限的处理时,RSYSLOG每秒可以将超过一百万的消息传递到本地目的地。即使在远程的目的地和更精细的处理中,性能通常也被认为是惊人的"。

官网:www.rsyslog.com/

2.1 rsyslog的特性

  • 多线程
  • UDP, TCP, SSL, TLS, RELP
  • MySQL, PGSQL, Oracle实现日志存储
  • 强大的过滤器,可实现过滤记录日志信息中任意部分
  • 自定义输出格式 可以日志
  • 适用于企业级

2.2 查看rsyslog的详细信息

vbnet 复制代码
 [root@localhost ~]#rpm -qi rsyslog 
 Name        : rsyslog
 Version     : 8.24.0
 Release     : 12.el7
 Architecture: x86_64
 Install Date: 2021年08月06日 星期五 20时59分53秒
 Group       : System Environment/Daemons
 Size        : 2001814
 License     : (GPLv3+ and ASL 2.0)
 Signature   : RSA/SHA256, 2017年08月11日 星期五 03时43分05秒, Key ID 24c6a8a7f4a80eb5
 Source RPM  : rsyslog-8.24.0-12.el7.src.rpm
 Build Date  : 2017年08月07日 星期一 08时56分12秒
 Build Host  : c1bm.rdu2.centos.org
 Relocations : (not relocatable)
 Packager    : CentOS BuildSystem <http://bugs.centos.org>
 Vendor      : CentOS
 URL         : http://www.rsyslog.com/
 Summary     : Enhanced system logging and kernel message trapping daemon
 Description :
 Rsyslog is an enhanced, multi-threaded syslog daemon. It supports MySQL,
 syslog/TCP, RFC 3195, permitted sender lists, filtering on any message part,
 and fine grain output format control. It is compatible with stock sysklogd
 and can be used as a drop-in replacement. Rsyslog is simple to set up, with
 advanced features suitable for enterprise-class, encryption-protected syslog
 relay chains.
​

2.3 ELK

ELK:由Elasticsearch,Logstash,Kibana三个软件组成

  • 非关系型分布式数据库基于apache软件基金会jakarta项目组的项目lucene
  • Elasticsearch是个开源分布式搜索引擎,可以处理大规模日志数据,比如:NginxTomcat系统日志等功能
  • Logstash对日志进行收集、分析,过滤,并将其存储供以后使用
  • Kibana 可以提供的日志分析友好的 Web 界面

3.rsyslog管理

3.1 rsyslog 系统日志术语

  • facility:设施,从功能或程序上对日志进行归类
perl 复制代码
#内置分类
auth(验证), authpriv, cron(定时任务), daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog
#自定义的分类
local0-local7
  • Priority 优先级别,从低到高排序
scss 复制代码
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)

还可以通过 man 3 syslogman logger查看帮助:

sql 复制代码
[root@centos8 ~]#yum -y install man-pages
[root@centos8 ~]#man 3 syslog
level
       This  determines  the  importance  of the message.  The levels are, in order of decreasing impor‐
       tance:
​
       LOG_EMERG      system is unusable
​
       LOG_ALERT      action must be taken immediately
​
       LOG_CRIT       critical conditions
​
       LOG_ERR        error conditions
​
       LOG_WARNING    warning conditions
​
       LOG_NOTICE     normal, but significant, condition
​
       LOG_INFO       informational message
​
       LOG_DEBUG      debug-level message
​

3.2 日志的等级

在 Linux 内核中,根据日志消息的重要程度不同,将其分为不同 的优先级别(数字等级越小,优先级越高,消息越重要)

等级名称 说 明 级别
debug (LOG_DEBUG) 一般的调试信息说明 7
info (LOG_INFO) 基本的通知信息 6
notice (LOG_NOTICE) 普通信息,但是有一定的重要性 5
warning(LOG_WARNING) 警吿信息,但是还不会影响到服务或系统的运行 4
error(LOG_ERR) 错误信息, 一般达到err等级的信息已经可以影响到服务成系统的运行了 3
crit (LOG_CRIT) 临界状况信思,比err等级还要严® 2
alert (LOG_ALERT) 状态信息,比crit等级还要严重,必须立即采取行动 1
emerg (LOG_EMERG) 疼痛等级信息,系统已经无法使用了 0

补充四条特殊

  • * 代表所有日志等级。比如,"authpriv.*"代表amhpriv认证信息服务产生的日志,所有的日志等级都记录
  • none:没有级别,即不记录
  • PRIORITY:指定级别(含)以上的所有级别
  • =PRIORITY:仅记录指定级别的日志信息

3.3 日志的服务名称

什么服务 的日志

服务名称 说 明
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系统进行数据传递的协议,后来 也常用在新闻组服务中

3.4 rsyslog相关文件

  • 程序包:rsyslog
  • 主程序:/usr/sbin/rsyslogd
  • CentOS 6:/etc/rc.d/init.d/rsyslog {start|stop|restart|status}
  • CentOS7和CentOS8:/usr/lib/systemd/system/rsyslog.service
  • 配置文件:/etc/rsyslog.conf/etc/rsyslog.d/*.conf
  • 库文件: /lib64/rsyslog/*.so

3.5 rsyslog的配置文件格式

rsyslog的配置文件是/etc/rsyslog.conf,它由三部分组成:

  • MODULES:相关模块配置
  • GLOBAL DIRECTIVES:全局配置
  • RULES:日志记录相关的规则配置

RULES配置格式:

java 复制代码
facility.priority; 
#分类      优先级
​
​
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息
​
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理

3.6 将ssh服务的日志单独设置

3.7 网络日志(远程日志)

csharp 复制代码
//日志服务器
[root@localhost ~]#vim /etc/rsyslog.conf 
....
# Provides TCP syslog reception 
$ModLoad imtcp
$InputTCPServerRun 514
//打开19 20行的配置
....
[root@localhost ~]#systemctl restart rsyslog.service 
[root@localhost ~]#ss -ntap|grep 514    //查看514端口
LISTEN     0      25           *:514                      *:*                   users:(("rsyslogd",pid=2015,fd=3))
LISTEN     0      25          :::514                     :::*                   users:(("rsyslogd",pid=2015,fd=4))
​
//服务器1
[root@localhost ~]#vim /etc/rsyslog.conf
.....
# Provides TCP syslog reception 
$ModLoad imtcp
$InputTCPServerRun 514
//打开19.20行配置
.....
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
*.info;mail.none;authpriv.none;cron.none                @@192.168.1.10
//设置日志发送到哪台服务器
.....
[root@localhost ~]#systemctl restart rsyslog.service 
[root@localhost ~]#ss -ntap|grep 514   //查看514端口
LISTEN     0      25           *:514                      *:*                   users:(("rsyslogd",pid=34126,fd=3))
ESTAB      0      0      192.168.1.13:36508              192.168.1.10:514                 users:(("rsyslogd",pid=34126,fd=9))
LISTEN     0      25          :::514                     :::*                   users:(("rsyslogd",pid=34126,fd=4))
[root@localhost ~]#logger "genshin is the best game in the world"
//向日志服务器发送日志
​
​
//日志服务器
[root@localhost ~]#tailf /var/log/messages 
Jul 31 19:00:01 localhost systemd: Started Session 2 of user root.
Jul 31 19:00:01 localhost systemd: Starting Session 2 of user root.
Jul 31 19:01:01 localhost systemd: Started Session 3 of user root.
Jul 31 19:01:01 localhost systemd: Starting Session 3 of user root.
Jul 31 19:01:59 localhost systemd: Stopping System Logging Service...
Jul 31 19:01:59 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="31808" x-info="http://www.rsyslog.com"] exiting on signal 15.
Jul 31 19:01:59 localhost systemd: Starting System Logging Service...
Jul 31 19:01:59 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="34126" x-info="http://www.rsyslog.com"] start
Jul 31 19:01:59 localhost systemd: Started System Logging Service.
Jul 31 19:03:06 localhost root: genshin is the best game in the world
"http://www.rsyslog.com"] exiting on signal 15.
Jul 31 19:01:59 localhost systemd: Starting System Logging Service...
Jul 31 19:01:59 localhost rsyslogd: [origin software="rsyslogd" swVersion="8.24.0" x-pid="34126" x-info="http://www.rsyslog.com"] start
Jul 31 19:01:59 localhost systemd: Started System Logging Service.
Jul 31 19:03:06 localhost root: genshin is the best game in the world
​
//最后一行显示了服务器1发送来的日志
​

3.8 journalct 日志管理工具

CentOS 7 以后版,利用Systemd 统一管理所有 Unit 的启动日志。带来的好处就是,可以只用journalctl一个命令,查看所有日志(内核日志和应用日志)

配置文件存放于:/etc/systemd/journald.conf

命令格式journalctl 选项

常用选项

  • -u 仅显示特定系统服务或单元的日志消息
  • -b 仅显示特定引导过程的日志消息
  • -p 仅显示特定优先级的日志消息
  • -n 显示指定行数的日志消息
  • -f 实时跟踪日志,持续显示新的日志消息
  • --since= 和 --until=: 仅显示指定时间范围内的日志消息。
相关推荐
许白掰40 分钟前
Linux入门篇学习——Linux 工具之 make 工具和 makefile 文件
linux·运维·服务器·前端·学习·编辑器
longze_75 小时前
Ubuntu连接不上网络问题(Network is unreachable)
linux·服务器·ubuntu
Dirschs5 小时前
【Ubuntu22.04安装ROS Noetic】
linux·ubuntu·ros
qianshanxue115 小时前
ubuntu 操作记录
linux
AmosTian8 小时前
【系统与工具】Linux——Linux简介、安装、简单使用
linux·运维·服务器
这我可不懂10 小时前
Python 项目快速部署到 Linux 服务器基础教程
linux·服务器·python
车车不吃香菇11 小时前
java idea 本地debug linux服务
java·linux·intellij-idea
tan77º11 小时前
【Linux网络编程】Socket - TCP
linux·网络·c++·tcp/ip
kfepiza12 小时前
Linux的`if test`和`if [ ]中括号`的取反语法比较 笔记250709
linux·服务器·笔记·bash
CodeWithMe12 小时前
【Note】《深入理解Linux内核》 第十九章:深入理解 Linux 进程通信机制
linux·运维·php