位置: 编程技术 - 正文

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

  • 企业租车能抵增值税吗
  • 换了公司后个税还要申请申报吗
  • 企业所得税从业人数怎么填,依据什么填写
  • 城建税会计分录怎么写
  • 递延所得税什么时候确认
  • 小规模进项可以收专票吗
  • 小规模纳税人免征增值税政策
  • 提供洒水车服务税率
  • 新会计准则开办费分摊
  • 以个人名义开的发票
  • 盘盈资产开具发票是否符合规定
  • 承兑汇票丢了如何追回
  • 有限合伙企业注册资金要求
  • 不动产税征收标准
  • 工程前期土地平整的会计分录怎么写?
  • 废旧物资回收需要什么手续
  • 企业从事生产经营活动时所持有的基本信念
  • 纳税人提供不动产经营租赁增值税征收管理
  • 旧机器设备出口
  • 多交的增值税怎么处理
  • 高新企业认定 研发委外费用
  • 一般纳税人建筑服务税率是多少
  • 没有车船税可以检车吗
  • 基本户被冻结了一般户可以发工资吗
  • acs_log是什么文件
  • 操作系统的文件系统管理主要负责
  • 收到退回的保证金利息怎么入账
  • PHP:class_uses()的用法_spl函数
  • php数组函数有哪些
  • java pdf生成工具
  • ajax不刷新页面
  • php图片添加水印的方法
  • 什么是行政单位任命的事业单位工作人员
  • 转账支票只能去开户行买吗?
  • 帝国cms如何使用
  • 研发费用计入科目
  • mongodbwin7能安装么
  • mongodb分片技术
  • 异地项目增值税要异地缴纳吗
  • 购买净资产为负数怎么办
  • 税率与征收率是怎么回事
  • mysql数据库命名 可以用-吗
  • 交易性金融资产公允价值变动怎么算
  • 逾期交房违约金 已支付金额
  • 预收账款年底是不是不能有余额
  • 营业成本利润率行业均值
  • 公司借款私人账户
  • 更新改造过程中的固定资产需要计提折旧吗
  • 销售包装物计入其他应收款吗
  • 单利率和复利率公式
  • 筹建期的财务费怎么算
  • 企业所得税退税会计分录
  • 新成立的分公司怎么样
  • 固定资产怎么折旧有几种方法
  • 营业外支出增加说明了什么
  • mysql更改密码命令
  • Mysql 1864 主从错误解决方法
  • sql企业管理器在哪里
  • ubuntu-
  • win2000停止服务
  • windows附件在哪里打开
  • 如何设置虚拟内存大小
  • win7怎么开不了机
  • 日历显示不全
  • win8切换到桌面的快捷键
  • ,linux
  • bash脚本语法
  • babel es6转es5原理
  • js对话框确定事件
  • 一个android项目一般包含哪些目录?各有什么用途?
  • Linux makefile 和shell文件相互调用实例详解
  • 文本框几种常用属性
  • js辅助器下载
  • 单机模式在哪
  • linux shell命令大全
  • android studio中r文件在哪
  • 如何将个税人员信息改为非正常
  • 车辆购置税如何入账
  • 物化政的大学有哪些
  • 电子税务局在线咨询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设