位置: 编程技术 - 正文

解析Linux系统中的/proc虚拟文件系统(linux 解析)

编辑:rootadmin

推荐整理分享解析Linux系统中的/proc虚拟文件系统(linux 解析),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:linux常见的命令解析器调用包括,linux理解,linux命令解析,linux解释器有哪些,linux理解,linux配置解析,linux怎么解析配置文件,linux配置解析,内容如对您有帮助,希望把文章链接给更多的朋友!

Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、 改变内核设置的机制。尽管在各种硬件平台上的 Linux 系统的 /proc 文件系统的 基本概念都是相同的,但本文只讨论基于 intel x 架构的 Linux /proc 文件系 统。

/proc --- 一个虚拟文件系统/proc 文件系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。如果你察看文件 /proc/mounts (和 mount 命令一样列出所有已经加载的文件系统),你会看到其中 一行是这样的:

复制代码代码如下: grep proc /proc/mounts/proc /proc proc rw 0 0/proc 由内核控制,没有承载 /proc 的设备。因为 /proc 主要存放由内核控制 的状态信息,所以大部分这些信息的逻辑位置位于内核控制的内存。对 /proc 进行 一次 'ls -l' 可以看到大部分文件都是 0 字节大的;不过察看这些文件的时候,确 实可以看到一些信息。这怎么可能?这是因为 /proc 文件系统和其他常规的文件系 统一样把自己注册到虚拟文件系统层 (VFS) 了。然而,直到当 VFS 调用它,请求 文件、目录的 i-node 的时候,/proc 文件系统才根据内核中的信息建立相应的文件 和目录。

加载 proc 文件系统如果系统中还没有加载 proc 文件系统,可以通过如下命令加载 proc 文件系统: 复制代码代码如下:mount -t proc proc /proc上述命令将成功加载你的 proc 文件系统。更多细节请阅读 mount 命令的 man page。

察看 /proc 的文件/proc 的文件可以用于访问有关内核的状态、计算机的属性、正在运行的进程的 状态等信息。大部分 /proc 中的文件和目录提供系统物理环境最新的信息。尽管 /proc 中的文件是虚拟的,但它们仍可以使用任何文件编辑器或像'more', 'less'或 'cat'这样的程序来查看。当编辑程序试图打开一个虚拟文件时,这个文件就通过内核 中的信息被凭空地 (on the fly) 创建了。这是一些我从我的系统中得到的一些有趣 结果:复制代码代码如下:$ ls -l /proc/cpuinfo-r--r--r-- 1 root root 0 Dec : /proc/cpuinfo$ file /proc/cpuinfo/proc/cpuinfo: empty$ cat /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 8model name : Pentium III (Coppermine)stepping : 6cpu MHz : .cache size : KBfdiv_bug : nohlt_bug : nosep_bug : noff_bug : nocoma_bug : nofpu : yesfpu_exception : yescpuid level : 2wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mcacmov pat pse mmx fxsr xmmbogomips : .processor : 3vendor_id : GenuineIntelcpu family : 6model : 8model name : Pentium III (Coppermine)stepping : 6cpu MHz : .cache size : KBfdiv_bug : nohlt_bug : nosep_bug : noff_bug : nocoma_bug : nofpu : yesfpu_exception : yescpuid level : 2wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mcacmov pat pse mmx fxsr xmmbogomips : .

这是一个从双 CPU 的系统中得到的结果,上述大部分的信息十分清楚地给出了这个系 统的有用的硬件信息。有些 /proc 的文件是经过编码的,不同的工具可以被用来解释 这些编码过的信息并输出成可读的形式。这样的工具包括:'top', 'ps', 'apm' 等。

得到有用的系统/内核信息

proc 文件系统可以被用于收集有用的关于系统和运行中的内核的信息。下面是一些重要 的文件:

解析Linux系统中的/proc虚拟文件系统(linux 解析)

/proc/cpuinfo - CPU 的信息 (型号, 家族, 缓存大小等)/proc/meminfo - 物理内存、交换空间等的信息/proc/mounts - 已加载的文件系统的列表/proc/devices - 可用设备的列表/proc/filesystems - 被支持的文件系统/proc/modules - 已加载的模块/proc/version - 内核版本/proc/cmdline - 系统启动时输入的内核命令行参数proc 中的文件远不止上面列出的这么多。想要进一步了解的读者可以对 /proc 的每一个 文件都'more'一下或读参考文献[1]获取更多的有关 /proc 目录中的文件的信息。我建议 使用'more'而不是'cat',除非你知道这个文件很小,因为有些文件 (比如 kcore) 可能 会非常长。

有关运行中的进程的信息/proc 文件系统可以用于获取运行中的进程的信息。在 /proc 中有一些编号的子目录。每个编号的目录对应一个进程 id (PID)。这样,每一个运行中的进程 /proc 中都有一个用它的 PID 命名的目录。这些子目录中包含可以提供有关进程的状态和环境的重要细节信息的文件。让我们试着查找一个运行中的进程。复制代码代码如下:$ ps -aef | grep mozillaroot 8 : pts/1 :: /usr/bin/mozilla上述命令显示有一个正在运行的 mozilla 进程的 PID 是 。相对应的,/proc 中应该有一个名叫 的目录复制代码代码如下: $ ls -l /proc/total 0-r--r--r-- 1 root root 0 Dec : cmdline-r--r--r-- 1 root root 0 Dec : cpulrwxrwxrwx 1 root root 0 Dec : cwd -> /proc/-r-------- 1 root root 0 Dec : environlrwxrwxrwx 1 root root 0 Dec : exe -> /usr/bin/mozilla*dr-x------ 2 root root 0 Dec : fd/-r--r--r-- 1 root root 0 Dec : maps-rw------- 1 root root 0 Dec : mem-r--r--r-- 1 root root 0 Dec : mountslrwxrwxrwx 1 root root 0 Dec : root -> //-r--r--r-- 1 root root 0 Dec : stat-r--r--r-- 1 root root 0 Dec : statm-r--r--r-- 1 root root 0 Dec : status文件 "cmdline" 包含启动进程时调用的命令行。"envir" 进程的环境变两。 "status" 是进程的状态信息,包括启动进程的用户的用户ID (UID) 和组ID(GID) , 父进程ID (PPID),还有进程当前的状态,比如"Sleelping"和"Running"。 每个进程的目录都有几个符号链接,"cwd"是指向进程当前工作目录的符号 链接,"exe"指向运行的进程的可执行程序,"root"指向被这个进程看作是 根目录的目录 (通常是"/")。目录"fd"包含指向进程使用的文件描述符的链接。 "cpu"仅在运行 SMP 内核时出现,里面是按 CPU 划分的进程时间。

/proc/self 是一个有趣的子目录,它使得程序可以方便地使用 /proc 查找本进程地信息。/proc/self 是一个链接到 /proc 中访问 /proc 的进程所对应的 PID 的目录的符号链接。

通过 /proc 与内核交互

上面讨论的大部分 /proc 的文件是只读的。而实际上 /proc 文件系统通过 /proc 中可读写的文件提供了对内核的交互机制。写这些文件可以改变内核 的状态,因而要慎重改动这些文件。/proc/sys 目录存放所有可读写的文件 的目录,可以被用于改变内核行为。

/proc/sys/kernel - 这个目录包含反通用内核行为的信息。 /proc/sys/kernel/{domainname, hostname} 存放着机器/网络的域名和主机名。 这些文件可以用于修改这些名字。

复制代码代码如下:$ hostnamemachinename.domainname.com$ cat /proc/sys/kernel/domainnamedomainname.com$ cat /proc/sys/kernel/hostnamemachinename$ echo "new-machinename" > /proc/sys/kernel/hostname$ hostnamenew-machinename.domainname.com

这样,通过修改 /proc 文件系统中的文件,我们可以修改主机名。很多其 他可配置的文件存在于 /proc/sys/kernel/。这里不可能列出所有这些文件, 读者可以自己去这个目录查看以得到更多细节信息。另一个可配置的目录是 /proc/sys/net。这个目录中的文件可以 用于修改机器/网络的网络属性。比如,简单修改一个文件,你可以在网络 上瘾藏匿的计算机。复制代码代码如下: $ echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all这将在网络上瘾藏你的机器,因为它不响应 icmp_echo。主机将不会响应其 他主机发出的 ping 查询。复制代码代码如下: $ ping machinename.domainname.comno answer from machinename.domainname.com要改回缺省设置,只要复制代码代码如下: $ echo 0 > /proc/sys/net/ipv4/icmp_echo_ignore_all/proc/sys 下还有许多其它可以用于改变内核属性。读者可以通过参考文献 [1], [2] 获取更多信息。

结论/proc 文件系统提供了一个基于文件的 Linux 内部接口。它可以用于确定系统 的各种不同设备和进程的状态。对他们进行配置。因而,理解和应用有关这个 文件系统的知识是理解你的 Linux 系统的关键。

详解Linux中输出文件内容的rev与tac命令使用 revrev显示最后一个字符显示到第一个字符。例:复制代码代码如下:[root@localhostwww]#cattestabcd[root@localhostwww]#revtestdcba[root@localhostwww]#tactestabcdtac用

发现Linux中IP地址冲突的方法 你们都知道什么是IP地址,是吧?它们被分配给网络上的设备来代表它们。它们通过DHCP服务器分配并且会经常改变。现在有两种IP地址。动态的一种会经

linux命令每天必学()之tail 命令 linuxtail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该

标签: linux 解析

本文链接地址:https://www.jiuchutong.com/biancheng/356821.html 转载请保留说明!

上一篇:Linux系统中使用cmp和comm命令来比较两个文件(linux使用cp)

下一篇:详解Linux中输出文件内容的rev与tac命令使用(linux输出结果)

  • 城镇土地使用税的征税范围有哪些
  • 税务局如何认定虚开
  • 未开票收入次月如何申报增值税
  • 残疾人一次性奖金
  • 盘盈的存货一般作为什么处理
  • 土地增值税清算规程实施细则
  • 为在建工程发生的管理费用
  • 财产租赁所得应缴纳个人所得税
  • 固定资产减值损失计入
  • 利润表中列报项目
  • 公司厂房出租发票怎么开
  • 以前年度损益调整会计分录
  • 如何算清楚公司的账
  • 金税盘减免分录
  • 设备安装合同预付款比例
  • 个人独资企业免费刻章吗
  • mac如何改变用户名
  • vue项目如何搭建
  • 企业废业怎样做会计分录
  • win10打开txt
  • 贷款本息转本金
  • 天然气 初装费
  • navione.exe是什么意思
  • 笔记本默认网关不可用怎么修复
  • 建筑企业被靠挂靠怎么办
  • macos big sur值得升级吗
  • pnp.npn
  • 用php做计算
  • php表单的作用是什么
  • 收到的税费返还减少说明什么
  • 火灾烧毁物品如何取证
  • php共享内存用法有哪些
  • smarty模板注入
  • 基于ansible的运维平台
  • 毕业设计基于51单片机多功能电子钟的设计
  • php如何实现
  • 命令启动服务管理
  • 二手车交易发票怎么收费
  • 公司购买家电开什么发票
  • 加班补贴费
  • 金税盘怎么取消
  • 外商投资企业wofe
  • 外汇核销是什么意思
  • 弥补亏损的会计分录
  • 个人福利要交税吗
  • 帝国cms文件夹介绍
  • 将织梦dedecms转换到wordpress
  • 折旧的结转
  • 个体户怎么申请电子营业执照
  • 研发支出是什么性质的科目
  • 购进无偿赠送
  • 银行贴息一般多久能到账
  • 高新企业账目有什么不同
  • 应付职工薪酬账户贷方登记的是
  • 劳务公司成本核算方法一般选择哪个
  • 本年利润为
  • 账外资产处理
  • 年报中纳税总额是本年实际缴纳的还是应纳税额
  • 应付账款账面价值怎么算
  • 年金现值系数和复利现值系数的公式
  • 小规模纳税人减按1%账务处理
  • 出差开会总结怎么写
  • 多交增值税不能抵扣
  • sql中的where in
  • win10预览版21277下载
  • win10屏幕自动变黄
  • vista升级选项灰色
  • vc6运行程序
  • win7系统如何安装蓝牙驱动
  • 怎么开aero透明模式
  • 虚拟机下安装操作软件
  • win7可以免费升win10
  • winxp能玩啥大型游戏
  • 错误化
  • android5种布局
  • android游戏开发论文
  • linux shell语句
  • python socket编程教程
  • 使用jQuery制作动画与特效及插件的应用
  • 广州地税网上服务大厅地址
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设