揭示 Linux 虚拟文件系统的强大功能

2023-10-23

Linux 虚拟文件系统或虚拟文件系统通常是位于实际文件系统之上的一层。它允许用户访问不同类型的文件系统,可以将虚拟文件系统视为内核与实际文件系统之间的接口。

这意味着您将在 /etc/fstab 文件中找不到这些 Linux 虚拟文件系统的任何条目。然而,当您键入 mount 命令时,您仍然会找到它们。

如果您来自 Windows,则虚拟文件系统有点像 Windows 中的注册表。

 

 

/proc 文件系统

proc文件系统是系统挂载在/proc目录下的虚拟文件系统。

/proc 上不存在真正的文件系统;它是一个虚拟层,可用于处理内核功能。

例如,要获取处理器规格,请键入以下命令:


$ cat /proc/cpuinfo  

这是查询 Linux 内核的一种引人注目且简单的方法。

请注意,如果检查 /proc 目录中的文件大小,您会发现所有文件大小均为 0,因为正如我们所说,它们不存在于磁盘上。

当您键入猫 /proc/cpuinfo命令后,系统会动态创建一个文件来显示 CPU 信息。

/proc 目录中唯一具有大小的文件是 /proc/kcore 文件,它显示 RAM 内容。该文件不占用磁盘上的任何空间。

 

写入 proc 文件

正如我们所看到的,我们可以读取 proc 文件的内容,但其中一些是可写的,因此我们可以写入它们来更改某些功能。

例如,如果您有多个网卡,则此 /proc/sys/net/ipv4/ip_forward 文件控制 IP 转发。

您可以像这样更改此文件的值:


$ echo "1" > /proc/sys/net/ipv4/ip_forward  

请记住,当您更改 /proc 目录下的任何文件或值时,不会验证您正在执行的操作,如果输入错误的设置,您可能会崩溃系统。

 

持久保存 /proc 文件更改

之前的修改为/proc/sys/net/ipv4/ip_forward重新启动后,条目将不会保留,因为您没有写入文件,这是一个虚拟文件系统,这意味着内存会发生更改。

如果需要将更改保存在/proc下,有两种方法:

  • 您可以在 /etc/rc.d/rc.local 文件中写入条目并使其可执行,并启用允许使用 rc.local 文件的 systemd 服务单元并写入条目。
  • 您可以使用 sysctl 命令更改 /proc/sys/ 目录中的条目。

$ sysctl net.ipv4.ip_forward  

这将显示条目的值,要更改它,请使用 -w 选项:


$ sysctl -w net.ipv4.ip_forward=1  

最后一步是将更改写入 /etc/sysctl.conf:


$ echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf  

在写入更改之前,请确保文件 /etc/sysctl.conf 不包含该条目。

 

常见的 /proc 条目

以下是一些常见的 /proc 条目:

/proc/cpuinfo Information about CPUs in the system.
/proc/meminfo information about memory usage.
/proc/ioports list of port regions used for I/O communication with devices.
/proc/mdstat display the status of RAID disks configuration.
/proc/kcore displays the actual system memory.
/proc/modules displays a list of kernel loaded modules.
/proc/cmdline displays the passed boot parameters.
/proc/swaps displays the status of swap partitions.
/proc/iomem the current map of the system memory for each physical device.
/proc/version displays the kernel version and time of compilation.
/proc/net/dev displays information about each network device like packets count.
/proc/net/sockstat displays statistics about network socket utilization.
/proc/sys/net/ipv4/ip_local_port_range display the range of ports that Linux uses.
/proc/sys/net/ipv4/tcp_ syncookies protection against syn flood attacks.

这些是 /proc 目录中的一些常见条目。

 

列出 /proc 目录

如果你列出/proc目录下的文件,你会发现很多目录都有数字名称,这些目录包含正在运行的进程的信息,数字值就是对应的进程ID。

您可以从这些目录中查看特定进程消耗的资源。

如果你看一下名为 1 的文件夹,它属于 init 进程或 systemd(如 CentOS 7),这是 Linux 启动时运行的第一个进程。


$ ls -l /proc/1  

The


/sbin/init  

在使用 init 二进制文件的其他系统中。

相同的概念适用于 /proc 目录下的所有数字文件夹。

 

/proc 有用的例子

为了保护您的服务器免受 SYN Flood 攻击,您可以使用 iptables 来阻止 SYN 数据包。

更好的解决方案是使用同步 cookies。内核中的一种特殊方法,用于跟踪来自哪些 SYN 数据包。如果 SYN 数据包在合理的时间间隔内没有移动到已建立的状态,内核将丢弃它们。


$ sysctl -w net.ipv4.tcp_syncookies=1  

并坚持改变。


$ echo "net.ipv4.tcp_syncookies = 1" >> /etc/sysctl.conf  

另一个有用的例子是/proc/sys/fs/文件最大,该值显示可以同时打开的最大文件数(包括套接字、文件等)。

您可以像这样增加这个数字:


$ sysctl -w "fs.file-max=96992"
$ echo "fs.file-max = 96992" >> /etc/sysctl.conf  

 

sysfs虚拟文件系统

sysfs 是一个 Linux 虚拟文件系统,这意味着它也在内存中。

您可以在以下位置找到 sysfs 文件系统:/sys。 sysfs 可用于获取有关系统硬件的信息。


$ ls -l /sys  

从上述命令的结果来看,文件大小全部为零,因为我们知道,这是一个 Linux 虚拟文件系统。

/sys 的顶级目录包含以下内容:

Block list of block devices detected on the system like sda.
Bus contains subdirectories for physical buses detected in the kernel.
class describes the class of device like audio, network, or printer.
Devices list all detected devices by the physical bus registered with the kernel.
Module lists all loaded modules.
Power the power state of your devices.

 

tmpfs虚拟文件系统

tmpfs 是一个 Linux 虚拟文件系统,将数据保存在系统虚拟内存中。它与任何其他虚拟文件系统相同;所有文件都临时存储在内核的内部缓存中。

您可以使用/tmp 文件系统作为临时文件的存储位置。

/tmp 文件系统由实际的基于磁盘的存储支持,而不是由虚拟系统支持。

您在期间选择此位置Linux安装.

/tmp 是在系统启动时由 systemd 服务自动创建的。

您可以使用 mount 命令设置具有所需大小的 tmpfs 样式文件系统。


$ mount it tmpfs -o size=2GB tmpfs  /home/myfolder  

惊人的!!

使用 Linux 虚拟文件系统非常容易。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

揭示 Linux 虚拟文件系统的强大功能 的相关文章

  • 如何在 Linux 上设置 LogMeIn (Hamachi) VPN

    Hamachi 用于使用或设置 VPN 并通过 VPN 网络连接系统 这提供了一种快速 更简单的方法来创建 VPN 网络和连接系统 您可以在 logmein com 上创建免费帐户并创建网络 您可以使用免费帐户在每个网络中添加最多 5 个系
  • Java 技巧:将字符串转换为日期

    在 Java 编程领域 日期和时间操作是一项基本技能 但是 日期通常作为字符串传递 这需要将这些字符串转换为 Date 对象以进行有效操作 在本综合指南中 我们将详细介绍在 Java 中将字符串转换为日期的过程 了解基础知识 表示日期的字符

随机推荐

  • UFW:通用防火墙规则和命令

    防火墙是一种安全系统 它根据预定义的安全规则监视和控制传入和传出的网络流量 它是任何安全网络的重要组成部分 无论是个人计算机还是大型企业网络 Uncomplicated Firewall UFW 是一个用户友好的命令行界面 用于管理 ipt
  • 编辑 crontab 文件的要点

    在系统管理领域 有一种强大的工具可以让您高效地安排任务 crontab 使用 crontab 您可以在指定的日期和时间执行脚本和命令 这使其成为基于 Unix 的系统中非常有用的实用程序 但是 要充分利用其潜力 您需要了解编辑 cronta
  • 如何在 Linux 中创建交换文件

    交换文件是 Linux 操作系统的重要组件 它通过提供额外的虚拟内存来帮助提高性能 它是在系统物理内存 RAM 填满时保留用作虚拟内存的磁盘空间 在 Linux 中创建交换文件有助于防止系统崩溃和不稳定 在本文中 我们将逐步讨论如何在 Li
  • 如何在 phpMyAdmin 中添加多个主机

    phpMyAdmin 默认配置仅允许连接到本地 MySQL 服务器 但是如果我们运行多个数据库服务器 那么如果我们可以从单个 phpMyAdmin 安装中选择需要连接的服务器 那就太好了 本操作指南将帮助您在 phpMyAdmin 中添加多
  • Bash 选择(制作菜单)

    在本教程中 我们将介绍以下基础知识select在 Bash 中构建 The select构造允许您生成菜单 Bash select构造 The select构造从项目列表生成菜单 它的语法几乎与for loop select ITEM in
  • 如何在 CentOS 7 上安装和配置 Redmine

    Redmine 是最流行的开源项目管理和问题跟踪软件工具之一 它是跨平台和跨数据库的 构建在 Ruby on Rails 框架之上 Redmine包括对多个项目 wiki 问题跟踪系统 论坛 日历 电子邮件通知等的支持 在本教程中 我们将介
  • 如何在 Ubuntu 18.04 上部署 Rocket.Chat

    Rocket Chat 是一个开源团队交流平台 是自托管的 Slack 替代品 它使用 Meteor 框架开发 提供各种功能 包括帮助台聊天 文件共享 视频会议 语音消息 API 等 对于想要托管自己的聊天系统的公司和社区来说 Rocket
  • .bashrc 与 .bash_profile

    如果您在命令行上花费大量时间 您很可能想要自定义您的 shell 环境 这可能意味着创建别名 将新目录添加到 PATH 或更改 shell 提示符的外观 您可能遇到过一些教程 其中他们说将您的配置放在 bashrc bash profile
  • 如何在 CentOS 7 上安装和使用 PHP Composer

    Composer是 PHP 的依赖管理器 类似于Node js 的 npm or Python 的点子 Composer 将提取您的项目所依赖的所有必需的 PHP 包并为您管理它们 它用于所有现代 PHP 框架和平台 例如 Laravel
  • 如何在 CentOS 8 上安装 Apache

    Apache HTTP 服务器是世界上使用最广泛的 Web 服务器 它是一个免费 开源 跨平台的HTTP服务器 具有强大的功能 并且可以通过多种模块进行扩展 在本文中 我们将解释如何在 CentOS 8 上安装和管理 Apache Web
  • 如何在 Debian 9 上安装 CouchDB

    CouchDB 是一个开源的容错且无模式的 NoSQL 数据库 由 Apache 软件基金会维护 CouchDB 服务器将其数据存储在命名数据库中 其中包含以下文档JSON结构 每个文档由许多字段和附件组成 字段可以包括文本 数字 列表 布
  • 如何在 CentOS 7 上安装 Visual Studio Code

    视觉工作室代码是微软开发的开源跨平台代码编辑器 它有一个内置的调试支持 嵌入式Git控制 语法突出显示 代码完成 集成终端 代码重构和片段 在 CentOS 计算机上安装 Visual Studio Code 最简单且推荐的方法是启用 VS
  • 如何在 Ubuntu 18.04 上安装 Mono

    Mono 是一个用于开发和运行基于 ECMA ISO 标准的跨平台应用程序的平台 它是 Microsoft NET 框架的免费开源实现 本教程介绍如何在 Ubuntu 18 04 上安装 Mono 先决条件 这些说明假定您以 root 身份
  • Linux中的su命令(切换用户)

    The su 替代或切换用户的缩写 实用程序允许您使用其他用户 默认为 root 用户 的权限运行命令 Using su是在当前登录会话中切换到管理帐户的最简单方法 当不允许 root 用户通过以下方式登录系统时 这尤其方便ssh或使用 G
  • Linux 中的Whereis命令

    whereis是一个命令行实用程序 允许您查找给定命令的二进制文件 源文件和手册页文件的位置 在这篇文章中 我们将向您展示如何使用Linuxwhereis命令 如何使用whereis命令 语法为whereis命令如下 whereis OPT
  • 在 CentOS 8 上使用 Let's Encrypt 保护 Nginx

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费 自动化 开放的证书颁发机构 提供免费的 SSL 证书 Let s Encrypt 颁发的证书受到所有主要浏览器的信任 并且自颁发之日起 90 天内有效 在本教程中 我
  • Expect 命令以及如何像魔术一样自动化 shell 脚本

    在上一篇文章中 我们讨论了写作实用的shell脚本 我们看到了编写 shell 脚本是多么容易 今天我们要讨论一个对 shell 脚本有神奇作用的工具 该工具是期待命令 or 期待脚本语言 Expect 命令或 Expect 脚本语言是一种
  • SSH 连接被拒绝(原因和解决方案)

    本教程将介绍您在使用 SSH 时可能遇到的最常见错误 连接被拒绝 请继续阅读 详细了解这个问题及其各种解决方案 Secure Shell SSH 是系统管理员最常用的工具之一 它对于管理所有服务器和执行日常任务至关重要 目录 hide 1
  • Linux env 命令:深入了解 Linux 环境管理

    The envLinux中的命令用于显示或设置环境变量 它可用于在修改后的环境中运行程序或显示当前环境 在本教程中 我们将深入研究其各种论点 并揭示其与脚本的集成 目录 hide 1 参数概览 2 执行不带参数的 env 命令 3 使用 e
  • 揭示 Linux 虚拟文件系统的强大功能

    Linux 虚拟文件系统或虚拟文件系统通常是位于实际文件系统之上的一层 它允许用户访问不同类型的文件系统 可以将虚拟文件系统视为内核与实际文件系统之间的接口 这意味着您将在 etc fstab 文件中找不到这些 Linux 虚拟文件系统的任