位置: 编程技术 - 正文

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

  • 增值税加计抵减政策
  • 什么类型的电子商务
  • 工程施工科目有没有伙食费啊
  • 技术服务费入账
  • 小规模什么情况下只交城建税
  • 土地政策补贴
  • 电梯提供安装的增值税税率最新的
  • 税负率过低进行什么交易
  • 企业必须要现金流入吗
  • 公司成立后有哪些开支
  • 研发物资
  • 企业结转已销产品的生产成本
  • 当月工资额什么意思
  • 小规模免了增值税怎么办
  • 股权转让印花税减半征收政策
  • 增值税普票销售方无开户行账号是否可以
  • 单位住房没有房产证是否可以买卖
  • 资产损益表怎么看
  • 无形资产属于什么行业
  • 本期销售额未达起征点请将本期应纳税额
  • 损益类账户包括成本类吗
  • 红冲发票后 库存怎么处理
  • 进项税额进成本
  • 1697510703
  • 红冲无票收入怎么报税
  • 玩穿越火线总是提示机器遇到
  • 结转完工产品成本的公式
  • 合并报表长投和所有者权益抵消的原理
  • 苹果手机删除的备忘录怎么恢复
  • 直系亲属股权转让免征个人所得税
  • 挂靠建筑公司没有票据怎么做账?
  • 银行发行债券要求
  • 作废的发票对方钱能打出来吗
  • 胡山森林公园门票多少钱一张
  • 社保缴费基数差1000一般差多少?
  • sta翻译中文
  • input输入语句
  • win11系统中怎样调整office底色
  • 防抖节流实现原理
  • linux的nfs如何使用
  • php数组处理函数array_push会影响源数组的元素吗
  • 应交增值税科目设置及账务处理
  • 代收代缴水费可以加多少损耗
  • 织梦系统
  • python中numpy数组的拼接、合并
  • 其他债权投资计提减值影响所有者权益吗
  • mysql查询时间段的交集数据
  • 财政补贴收入要交增值税税率
  • 新销售收入的确认条件
  • 销售提成如何入账
  • 外地预缴怎么算
  • 税局代开专票对方隔月退回重开如何做账务处理呢?
  • 申请专利的费用怎么入账
  • 存货的盘盈
  • 最新版的电子发票没有章
  • 企业收到投资款怎么入账
  • 装修费用不摊销怎么入账
  • 企业应付账款的借方余额反映的是
  • 行政事业单位能报销瓶装水吗
  • mysql缩印
  • sql2000语句
  • 关闭windowsxp窗口的方法有
  • win7和linux双系统
  • windowsxp怎么查看用户名密码
  • win7装完系统我的电脑在哪
  • windows10右键菜单被任务栏挡
  • unix怎么操作
  • linux k
  • 统计动态分析
  • window.location.reload白屏
  • 安卓笔记软件squid使用教程
  • opengl 透视投影
  • [置顶]津鱼.我爱你
  • nodejs操作mysql
  • node .js
  • jquery导入
  • 网上缴费后如何复电
  • 行政机关吗
  • 广东省国家税务总局电子税务局
  • 潍坊市市区
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设