有谁可以提供一些Linux系统概述的资料,要快,非常感谢。

I remember that year in the university library I saw a book about Linux with the famous penguin icon on the cover. At that time, I curiously opened the page and found that "Linux is an open source operating system."
At that time, I was still using Windows, and my understanding of Linux was limited to the introduction in books.后来,我在实验室认识了一位老师。
He was a h3 fan of Linux and often installed Linux on his computer. One time, he showed me the multitasking capabilities of Linux.我当时就震惊了。
One computer can run multiple programs at the same time, and switching was very smooth.这让我对Linux产生了浓厚的兴趣。

后来我开始自学Linux,从最简单的命令行操作开始,一步步深入内核编程。
我发现Linux世界非常丰富多彩。
It is not just an operating system, but also a culture and a soul.记得有一次,我在网上看到一篇关于Linux内核的帖子,说Linux内核的作者Linus Torvalds在短短一个月内完成了Linux内核的第一个版本,以证明他在大学时的编程能力。

These details made me respect Linus Torvalds and made me more determined to learn Linux. Now, I use Linux almost every day, whether it is at work or study, and it has brought me great convenience. However, I also think, what is the future of Linux?能否继续引领科技潮流?等等,还有别的事。
It suddenly occurred to me that Linux's popularity doesn't seem to be that high in China.这是为什么呢?

Linux体系下的accept队列和SYN队列

哦,是的,在Linux系统中,当TCP套接字处于LISTEN状态时,实际上有两个队列,一个称为SYN队列,另一个称为Accept队列。

SYN队列,主要是做什么用的?它只是存储收到的 SYN 数据包。
器收到这个 SYN 包,然后它得回一个 SYN+ACK 包过去,对吧? 只是在这个 SYN 队列中等待客户端用 ACK 确认进行响应。
如果客户端的ACK没有返回并且过期,服务器将不得不重传SYN+ACK。
会重播多少次?这取决于参数。
有一个名为 net.ipv4 .tcp_synack_retries 的参数。
默认值一般为5 倍。
这种重传机制并不是执行一两次的。
重传可能需要几十秒。
在内核代码中,SYN队列中的内容对应着一个structinet_request_sock结构。
那么国家呢?确认了连接,那就在SYN队列里完成找到这个请求,搞验证,把它干掉,然后创建一个完整的连接,那就是structinet_sock结构体,然后把这个完整的连接扔到接受队列里去。

接受队列呢,里面放的是已经搞好连接了,就是客户端和服请接受()。
工作流程非常简单,即当进程调用accept()时,它从Accept队列中取出一个并将其交给程序。
如何确定队列大小?只需在调用listen()时传递一个backlog参数即可。
过去,在 Linux 内核版本 4 .3 之前,必须使用 net.ipv4 .tcp_max_syn_backlog 参数设置 SYN 队列大小,但现在不再需要这样做。
现在让我们都使用 net.core.somaxconn 参数,它处理 SYN 队列和 Accept 队列。
如何正确设置呢?别猛,或者客户端往返时间特别长,可能就得加大这个队列大小。
但是,不要将其设置得太大。
如果太大,内存开销会不会很大,如果发生SYN Flood攻击,会不会所有资源都被占用?
当队列溢出时会发生什么?这意味着Accept队列已满,并且高层程序调用Accept()的速度不够快,因此无法处理后续的SYN和ACK数据包。
这时内核中就会有一个名为TcpExtListenOverflows和TcpExtListenDrops的计数器,将其添加进来。
内核是如何工作的?就将那些请求扔掉,希望你的上层程序能够处理它们,并在一段时间后正常处理它们。
如果你想改变这种行为,可以改变net.ipv4 .tcp_abort_on_overflow参数,但一般不建议改变它。

你觉得怎么样?使用 ss 命令,您可以查看单个端口的接受队列的大小和 SYN 队列的状态。
或者您可以使用 SystemTap 脚本之类的工具来查看哪些 SYN 包已被删除以及哪些程序已受到影响。
图像?没有照片。
就这样。

linux里面如何查文件系统下所有挂载的目录?

Linux 目录实际上非常有趣。
它从哪里来?在早期,硬盘驱动器非常小,无法放入盘片中,因此问题是开放的。
此时,根目录“/”挂了第一个盘,“/usr”挂了第二个盘。
事情就是这样发生的。
现在硬盘更大了,一切都不同了。

看根“/”,它看起来像下面的分支。
可以用“..”和“/”来移动,非常方便。
该目录与硬盘没有直接连接。
如果要加硬盘的话,随便挂载一下,用mount命令就可以了。

目录是如何划分的?具体一点。
大家都知道“/etc”存放的是配置文件。
“/bin”和“/sbin”包含系统命令。
将日志放在 /var/log 中,以便在系统出现问题时可以读取它们。
“/home”包含用户的主目录,所有正常的用户内容都存储在其中。

准确地说:
将设备文件放在“/dev”下,例如“/dev/null”即可删除该文件。

“/lib”存放内核和程序都必须使用的库文件。

“/lost+found”非常有趣。
当系统出现问题时,损坏的文件就会出现在这里,有时它们可​​以修复。

“/mnt”用于U盘、CD等临时设备。

“/tmp”存储具有特殊权限的临时文件。

“/usr”是一个很大的位置,所有命令和文档都位于其中。

由于现在硬盘容量很大,分区不再那么重要。
但这个结构还是很有用的。
系统管理员必须了解这些目录,否则它们将变得难以管理。
一旦目录被分割,系统维护就变得更加容易。