位置: 编程技术 - 正文

解析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输出结果)

  • 印花税滞纳金应计入什么
  • 账面成本包含增值税吗
  • 委托加工业务中,委托方是纳税义务人
  • 营业执照作废声明怎么撤销
  • 网上商城的主要功能以及购物流程
  • 停车费定额发票税率
  • 房地产开发企业预收款预缴增值税
  • 增值税采用
  • 存货成本包括消费吗
  • 公司存款利率
  • 拆迁置换安置房
  • 企业自有公租房有房产证吗
  • 工人保险一个月多少钱
  • 在杂志上发表论文
  • 优化技巧
  • 怎么查询财务章备案信息
  • 房屋租赁合同如何办理
  • 办税人员的职责和义务
  • 独立核算分公司可以享受小型微利企业优惠吗
  • 公司公章丢失登报后又找到了
  • 印刷费可以开哪些科目
  • 个体工商户开9%的税需要什么
  • 房地产土地增值税加计扣除20%
  • 反映留存收益的账户
  • 实际利率是r还是i
  • windowsserver2019安装教程
  • 项目投资总额是什么
  • w10引导修复工具
  • 退回以前年度多交增值税
  • 什么是会计分录其一般表达形式是怎样的
  • excel2019冻结
  • cpqdfwag.exe是什么进程 能结束吗 cpqdfwag进程查询
  • 长期借款还款
  • 雪山上的老鼠
  • PHP:imageinterlace()的用法_GD库图像处理函数
  • 公司向股东借的钱怎么还
  • 爱丁堡几点天黑
  • php 动态调用类方法
  • 申请高新技术企业收入要多少
  • thinkphp jquery实现图片上传和预览效果
  • 怎么用php写一个简单框架
  • 旅行社代订的机票可以退吗
  • url静态化怎么操作
  • access使用查询向导创建查询
  • 免税不能抵扣
  • 清空表sql语句
  • 酒店客房成本计算公式
  • 单位卖车怎么做账
  • 城镇土地使用税每年都要交吗
  • 企业赠送个人房产 所得税
  • 汽车维修费可以入账吗
  • 机票的退票费会退到哪里
  • 上个季度增值税报错了
  • 公司一般户需要纳税吗
  • 可供出售债权投资
  • 产品质量认证费用属于什么成本
  • 公司转让二手车需要缴纳什么税
  • ubuntu系统怎么安装搜狗输入法
  • 不会安装系统怎么安装
  • U盘安装centos8
  • SSDP Discovery Service 是什么可以禁用吗
  • ubuntu怎么播放视频
  • ubuntu系统如何
  • 彻底删除ubuntu系统
  • win7界面比win10好看
  • centos7添加桌面图标
  • win10 edge浏览器设置信任站点
  • centos无法挂载位置
  • 如何彻底解决win10自动重启
  • opengl光照效果
  • jquery的事件处理
  • android入门视频教程
  • jquery设置滚动条
  • transformer可视化
  • 数据库的基本操作实验报告
  • jQuery+JSON实现AJAX二级联动实例分析
  • java script
  • 厦门增值税发票查询
  • 国家税务总局2016年17号公告
  • 个体工商户如何注销
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设