Linux文件系统下proc目录详解
linux proc文件夹介绍
/proc/stat 所有的CPU活动信息
/proc/sysrq-trigger 使用echo命令来写这个文件的时候,远程root用户可以执行大多数的系统请求关键命令,就好像在本地终端执行一样。要写入这个文件,需要把/proc/sys/kernel/sysrq不能设置为0。这个文件对root也是不可读的
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
除了以上介绍的这些,还有的是一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程都有对应的一个目录在/proc下,以进程的 PID号为目录名,它们是读取进程信息的接口。而self目录则是读取进程本身的信息接口,是一个link。
2. 子文件或子文件夹
/proc/buddyinfo 每个内存区中的每个order有多少块可用,和内存碎片问题有关
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
Linux下/proc目录简介
1. /proc目录
Linux 内核提供了一种通过 /proc 文件系统,在运行时访问内核内部数据结构、改变内核设置的机制。proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。
linux操作系统目录结构详解
linux操作系统目录结构详解linux操作系统目录结构详解为了帮助广大考试新手们更加顺利地复习备考,店铺整理了关于Linux目录结构的备考资料,希望能够对大家有所帮助。
linux 目录结构/: 根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
/boot: 放置linux系统启动时用到的一些文件。
/boot/vmlinuz为linux的内核文件,以及/boot/gurb.建议单独分区,分区大小100M 即可/dev: 存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt./etc: 系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。
注:/etc/X11存放与x windows有关的设置。
/home: 系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。
建议单独分区,并设置较大的磁盘空间,方便用户存放数据/lib:/usr/lib:/usr/local/lib: 系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules./lost+fount: 系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。
如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found/mnt:/media: 光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。
Linux中proc目录下文件详解
[root@localhost ~]# cat /proc/loadavg 0.11 0.16 0.14 3/126 3912
-------------------------------------------------------------------------------/proc/locks 文件 这个文件包含在打开的文件上的加锁信息。文件中的每一行描述了特定文件和文档上的加锁信息以及对文 件施加的锁的类型。内核也可以需要时对文件施加强制性锁。 示例: [root@localhost redhat]# cat /proc/locks 1: POSIX ADVISORY READ 3822 03:0a:1067117 0 EOF 2: POSIX ADVISORY READ 3822 03:0a:1067138 0 EOF 3: POSIX ADVISORY WRITE 3326 03:0a:2326540 0 EOF 4: POSIX ADVISORY WRITE 2639 03:0a:2966595 0 EOF 5: FLOCK ADVISORY WRITE 2591 03:0a:2966586 0 EOF 6: POSIX ADVISORY WRITE 2540 03:0a:2966578 0 EOF 7: POSIX ADVISORY WRITE 2530 03:0a:2966579 0 EOF 8: POSIX ADVISORY WRITE 2402 03:0a:2966563 0 EOF 9: POSIX ADVISORY WRITE 2371 03:0a:2966561 0 EOF --------------------------------------------------------------------------------
proc 文件系统
该函数将创建一个目录,父目录为parent。
proc文件系统的编程接口
删除节点(文件或者目录)remove_proc_entry()
void remove_proc_entry ( const char *name, struct proc_dir_entry *parent)
该函数将删除一个proc节点(按文件名删除)。
proc文件系统的编程接口
以上五个创建节点的函数在内核中的实现流程:
通过proc_create为结构申请空间,并进行一些初始化工 作。 proc_register则进一步填写结构中的域。并完成注册工作
删除节点的函数在内核中的实现流程:
则是先调用clear_bit和proc_kill_inodes,注销inode结构 ,如果引用数为0,则调用free_proc_entry释放结构对应 的空间;否则置一个删除标志,不释放空间
proc文件系统的编程接口
创建设备文件proc_mknod()
struct proc_dir_entry *proc_mknod( const char *name, mode_t mode, struct proc_dir_entry *paren建一个名字为name的设 备文件,文件类型和权限为mode,设备号为rdev 。
操作系统 课程设计
proc 文件系统
proc
proc 文件系统是 Linux 中的特殊文件系统,提供 中的特殊文件系统, 给用户一个可以了解内核内部工作过程的可读窗 口,在运行时访问内核内部数据结构、改变内核 在运行时访问内核内部数据结构、 设置的机制。 设置的机制。
保存系统当前工作的特殊数据,但并不存在于任何物 理设备中; 对其进行读写时,才根据系统中的相关信息即时生成 ;或映射到系统中的变量或数据结构; proc 被称为‘伪文件系统’; 其挂接目录点固定为/proc; ‘man proc’ 进行了详细说明。
linux常见文件路径
linux常见文件路径
Linux中的常见文件路径包括以下几种:
1. / :根目录,Linux文件系统的起点。
2. /bin :存放用户二进制文件(可执行文件)的目录。
3. /boot :存放Linux系统引导所需的文件,包括内核文件和引导加载程序。
4. /dev :存放设备文件,包括磁盘、键盘、鼠标等外部设备所对应的文件。
5. /etc :存放系统配置文件,包括系统服务的配置文件和用户账户的配置文件等。
6. /home :存放用户的主目录,每个用户都有一个独立的主目录。
7. /lib :存放系统库文件,包括Linux系统所需的共享库文件。
8. /media :存放可移动媒体设备(如U盘、光盘等)的挂载点。
9. /mnt :存放临时文件系统的挂载点。
10. /opt :存放可选的应用程序软件包的目录。
11. /proc :存放Linux内核的虚拟文件系统,包括系统内核的运行状态信息和进程信息等。
12. /root :超级用户的主目录。
13. /sbin :存放超级用户二进制文件的目录,包括系统管理工具等。
14. /tmp :存放临时文件的目录,保存着Linux系统运行过程中产生的临时文件。
15. /usr :存放用户安装的应用程序、库文件、文档等,是一个较大的目录。
16. /var :存放系统运行过程中产生的变化文件,包括日志文件、临时文件等。
以上是Linux中的常见文件路径,了解这些路径对于日常使用和系统管理都非常有帮助。
linux pid 路径
linux pid 路径Linux操作系统中,每个进程都有一个唯一的进程标识符(PID)。
PID是一个数字,用于标识进程在操作系统中的身份。
在Linux系统中,PID路径是指一个进程在文件系统中的路径,可以通过该路径找到对应进程的相关信息。
在Linux系统中,每个进程都有一个对应的进程目录,该目录的路径为/proc/PID。
其中,PID是进程的标识符。
进入该目录后,可以通过查看相应的文件来获取进程的详细信息。
在/proc/PID目录下,有一些重要的文件和目录,如下所示:1. cmdline:该文件保存了进程的启动命令行参数。
通过查看该文件,可以了解进程是如何启动的。
2. environ:该文件保存了进程的环境变量。
通过查看该文件,可以了解进程的运行环境。
3. exe:该文件是进程的可执行文件的链接。
通过查看该文件,可以了解进程的可执行文件路径。
4. fd:该目录保存了进程打开的文件描述符的信息。
通过查看该目录下的文件,可以了解进程打开了哪些文件。
5. status:该文件保存了进程的状态信息,如进程的PID、父进程的PID、进程的运行状态等。
除了以上这些文件外,还有许多其他的文件和目录,保存了进程的其他信息。
通过读取这些文件,可以了解进程的详细信息。
通过PID路径,我们可以对进程进行监控和管理。
比如,我们可以通过读取/proc/PID/status文件获取进程的状态信息,判断进程是否在运行;通过读取/proc/PID/cmdline文件获取进程的启动命令行参数,了解进程是如何启动的;通过读取/proc/PID/fd目录下的文件,了解进程打开了哪些文件。
PID路径在Linux系统中扮演着重要的角色。
通过PID路径,我们可以方便地获取进程的相关信息,进行进程管理和监控。
同时,PID 路径也是Linux系统中进程管理的基础,通过PID路径,操作系统可以对进程进行唯一标识和管理。
PID路径是Linux系统中进程在文件系统中的路径,通过该路径可以找到进程的相关信息。
linux中proc详解
linux中proc详解Linux-procproc ⽂件系统在Linux中有额外的机制可以为内核和内核模块将信息发送给进程-- /proc ⽂件系统。
最初设计的⽬的是允许更⽅便的对进程信息进⾏访问(因此得名),现在它被每⼀个有有趣的东西报告的内核使⽤,例如/proc/modules 有模块的列表/proc/meminfo 有内存使⽤的统计表。
使⽤proc ⽂件系统的⽅法和使⽤设备驱动程序⾮常相似--创建⼀个/proc ⽂件需要的所有信息的结构,包括任何处理函数的指针(在我们的例⼦中只有⼀个,当某⼈试图从/proc ⽂件读时调⽤的那⼀个)。
然后,init_module 在内核中登记该结构⽽cleanup_module 注销它。
我们使⽤proc_register_dynamic(这是在2.0 版中的情况,在2.2 版中如果我们将节点设置为0系统将⾃动为我们做到) 的原因是我们不想预先决定我们的⽂件的节点数字,⽽是为防⽌冲突⽽由内核决定它。
通常的⽂件系统存在于磁盘上⽽不是内存中(/proc 在内存中),在这中情况下,节点数是是指向⽂件的索引节点所在的磁盘位置的指针。
节点包含⽂件的信息(例如⽂件的存取权限)和指向磁盘位置或⽂件数据可以被找到的⼏个位置的指针。
因为当⽂件被打开或关闭的时候不能得到调⽤,所以在这个模块中没有地⽅放置MOD_INC_USE_COUNT 和MOD_DEC_USE_COUNT,并且,如果⽂件被打开随后模块被移除,我们没有办法避免后果。
在下⼀章我们会看到⼀个艰难的但更灵活的可以处理/proc⽂件的实现⽅式,它也可以让我们防⽌那个问题。
/os/201202/119552.htmlLinux 内核提供了⼀种通过/proc ⽂件系统,在运⾏时访问内核内部数据结构、改变内核设置的机制。
尽管在各种硬件平台上的Linux 系统的/proc ⽂件系统的基本概念都是相同的,但本⽂只讨论基于intel x86 架构的Linux /proc ⽂件系统。
你不知道的Linux内核中的proc文件系统
你不知道的Linux内核中的proc文件系统简介procfs文件系统是内核中的一个特殊文件系统。
它是一个虚拟文件系统: 它不是实际的存储设备中的文件,而是存在于内存中。
procfs中的文件是用来允许用户空间的程序访问内核中的某些信息(比如进程信息在 /proc/[0-9]+/中),或者用来做调试用途(/proc/ksyms,这个文件列出了已经登记的内核符号,这些符号给出了变量或函数的地址。
每行给出一个符号的地址,符号名称以及登记这个符号的模块。
程序ksyms、insmod和kmod使用这个文件。
它还列出了正在运行的任务数,总任务数和最后分配的PID。
)这个文档描述了内核中procfs文件系统的使用。
它以介绍所有和管理文件系统相关的函数开始。
在函数介绍后,它还展示了怎么和用户空间通信,和一些小技巧。
在文档的最后,还给出了一个完整的例子。
注意/proc/sys中的文件属于sysctl文件,它们不属于procfs文件系统,被另外一套完全不同的api管理。
seq_fileprocfs在处理大文件时有点笨拙。
为了清理procfs文件系统并且使内核编程简单些,引入了seq_file机制。
seq_file机制提供了大量简单的接口去实现大内核虚拟文件。
seq_file机制适用于你利用结构序列去创建一个返回给用户空间的虚拟文件。
要使用seq_file机制,你必须创建一个”iterator”对象,这个对象指向这个序列,并且能逐个指向这个序列中的对象,此外还要能输出这个序列中的任一个对象。
它听起来复杂,实际上,操作过程相当简单。
接下来将用实际的例子展示到底怎么做。
首先,你必须包含头文件。
接下来,你必须创建迭代器方法:start, next, stop, and show。
start方法通常被首先调用。
这个方法的函数原型是:void *start(struct seq_file *sfile, loff_t *pos);sfile没什么作用,通常被忽略。
Linux中的文件和目录结构详解
Linux中的⽂件和⽬录结构详解 对于每⼀个Linux学习者来说,了解Linux⽂件系统的⽬录结构,是学好Linux的⾄关重要的⼀步.,深⼊了解linux⽂件⽬录结构的标准和每个⽬录的详细功能,对于我们⽤好linux系统只管重要,下⾯我们就开始了解⼀下linux⽬录结构的相关知识。
当在使⽤Linux的时候,如果您通过ls –l / 就会发现,在/下包涵很多的⽬录,⽐如etc、usr、var、bin ... ... 等⽬录,⽽在这些⽬录中,我们进去看看,发现也有很多的⽬录或⽂件。
⽂件系统在Linux下看上去就象树形结构,所以我们可以把⽂件系统的结构形象的称为树形结构。
⽂件系统的是⽤来组织和排列⽂件存取的,所以它是可见的,在Linux中,我们可以通过ls等⼯具来查看其结构,在Linux系统中,我们见到的都是树形结构;⽐如操作系统安装在⼀个⽂件系统中,它表现为由/ 起始的树形结构。
linux⽂件系统的最顶端是/,我们称/为Linux的root,也就是 Linux操作系统的⽂件系统。
Linux的⽂件系统的⼊⼝就是/,所有的⽬录、⽂件、设备都在/之下,/就是Linux⽂件系统的组织者,也是最上级的领导者。
由于linux是开放源代码,各⼤公司和团体根据linux的核⼼代码做各⾃的操作,编程。
这样就造成在根下的⽬录的不同。
这样就造成个⼈不能使⽤他⼈的linux系统的PC。
因为你根本不知道⼀些基本的配置,⽂件在哪⾥。
这就造成了混乱。
这就是FHS(Filesystem Hierarchy Standard )机构诞⽣的原因。
该机构是linux爱好者⾃发的组成的⼀个团体,主要是是对linux做⼀些基本的要求,不⾄于是操作者换⼀台主机就成了linux的‘⽂盲’。
事实上,FHS是根据过去的经验⼀直再持续的改版的,FHS依据⽂件系统使⽤的频繁与否与是否允许使⽤者随意更动,⽽将⽬录定义成为四种交互作⽤的形态,⽤表格来说有点像底下这样:可分享的(shareable)不可分享的(unshareable)不变的(static)/usr (软件放置处)/etc (配置⽂件)/opt (第三⽅协⼒软件)/boot (开机与核⼼档)可变动的(variable)/var/mail (使⽤者邮件信箱)/var/run (程序相关) /var/spool/news (新闻组)/var/lock (程序相关)四中类型:1.可分享的: 可以分享给其他系统挂载使⽤的⽬录,所以包括执⾏⽂件与⽤户的邮件等数据,是能够分享给⽹络上其他主机挂载⽤的⽬录;2.不可分享的: ⾃⼰机器上⾯运作的装置⽂件或者是与程序有关的socket⽂件等,由于仅与⾃⾝机器有关,所以当然就不适合分享给其他主机了。
Linux系统下各文件目录的含义
随着Linux的不断发展,越来越多的人开始使用Linux,对于那些刚刚接触的人来说,恐怕最先感到困惑的就是那些“不明不白”的目录了。
如果想熟练使用Linux,让Linux听命于自己,就必须掌握这些目录,下面就以Xteam公司的最新产品——XteamLinux 4.0为例,介绍一下在该系统下的目录。
/bin bin是Binary的缩写。
这个目录存放着最经常使用的命令。
/boot这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。
/dev dev是Device(设备)的缩写。
该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/mnt在这里面中有四个目录,系统提供这些目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/cdrom上,然后进入该目录就可以查看光驱里的内容了。
/proc这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all。
/root该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
linux的根目录下各个目录的基本含义
rc.d的内容如下:init.d/ :各种服务器和程序的二进制文件存放目录。
rcx.d/: 各个启动级别的执行程序连接目录。
里头的东西都是指向init.d/的一些软连接。
具体的后边叙述。
还有三个脚本:rc.sysinit, rc, rc.localredhat的启动方式和执行次序是:加载内核执行init程序/etc/rc.d/rc.sysinit # 由init执行的第一个脚本/etc/rc.d/rc $RUNLEVEL # $RUNLEVEL为缺省的运行模式/etc/rc.d/rc.local/sbin/mingetty # 等待用户登录在Redhat中,/etc/rc.d/rc.sysinit主要做在各个运行模式中相同的初始化工作,包括:调入keymap以及系统字体启动swapping设置主机名设置NIS域名检查(fsck)并mount文件系统打开quota装载声卡模块设置系统时钟等等。
/etc/rc.d/rc则根据其参数指定的运行模式(运行级别,你在inittab文件中可以设置)来执行相应目录下的脚本。
凡是以Kxx开头的,都以stop为参数来调用;凡是以Sxx开头的,都以start为参数来调用。
调用的顺序按xx 从小到大来执行。
例如,假设缺省的运行模式是3,/etc/rc.d/rc就会按上述方式调用/etc/rc.d/rc3.d/下的脚本。
值得一提的是,Redhat中的运行模式2、3、5都把/etc/rc.d/rc.local做为初始化脚本中的最后一个,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登录之前执行的命令。
init在等待/etc/rc.d/rc执行完毕之后(因为在/etc/inittab中/etc/rc.d/rc的action是wait),将在指定的各个虚拟终端上运行/sbin/mingetty,等待用户的登录。
至此,LINUX的启动结束。
Linux操作系统中的文件目录结构“/”根目录部分有以下子目录:/usr 目录包含所有的命令、程序库、文档和其它文件。
proc文件系统下,创建文件和文件夹proc_mkdir()proc_create()
proc⽂件系统下,创建⽂件和⽂件夹proc_mkdir()proc_create()proc_create的使⽤⽅法proc⽂件系统是个有⽤的东东。
创建⼀个proc虚拟⽂件,应⽤层通过读写该⽂件,即可实现与内核的交互。
proc虚拟⽂件是如何创建的呢?先看看⽐较简单的,创建proc⽂件夹。
调⽤以下函数,即可实现proc⽂件夹的创建:struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);name就是要创建的⽂件夹名称。
parent是要创建节点的⽗节点。
也就是要在哪个⽂件夹之下创建新⽂件夹,需要将那个⽂件夹的proc_dir_entry传⼊。
如果是在/proc⽬录下创建⽂件夹,parent为NULL。
例如:struct proc_dir_entry *mytest_dir = proc_mkdir("mytest", NULL);然后来看看proc⽂件的创建。
创建⽅法是调⽤以下函数:static inline struct proc_dir_entry *proc_create(const char *name, mode_t mode,struct proc_dir_entry *parent, const struct file_operations *proc_fops);name就是要创建的⽂件名。
mode是⽂件的访问权限,以UGO的模式表⽰。
parent与proc_mkdir中的parent类似。
也是⽗⽂件夹的proc_dir_entry对象。
proc_fops就是该⽂件的操作函数了。
例如:struct proc_dir_entry *mytest_file = proc_create("mytest", 0x0644, mytest_dir, mytest_proc_fops);还有⼀种⽅式:struct proc_dir_entry *mytest_file = proc_create("mytest/mytest", 0x0644, NULL, mytest_proc_fops);如果⽂件夹名称和⽂件名定义为常量:#define MYTEST_PROC_DIR "mytest"#define MYTEST_PROC_FILE "mytest"第⼆种⽅式为:struct proc_dir_entry *mytest_file = proc_create(MYTEST_PROC_DIR"/"MYTEST_PROC_FILE, 0x0644, NULL, mytest_proc_fops);接下来看看mytest_proc_fops的定义。
Linux系统下各文件目录的含义
随着Linux的不断发展,越来越多的人开始使用Linux,对于那些刚刚接触的人来说,恐怕最先感到困惑的就是那些“不明不白”的目录了。
如果想熟练使用Linux,让Linux听命于自己,就必须掌握这些目录,下面就以Xteam公司的最新产品——XteamLinux 4.0为例,介绍一下在该系统下的目录。
/bin bin是Binary的缩写。
这个目录存放着最经常使用的命令。
/boot这里存放的是启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。
/dev dev是Device(设备)的缩写。
该目录下存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的DLL文件。
几乎所有的应用程序都需要用到这些共享库。
/lost+found这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/mnt在这里面中有四个目录,系统提供这些目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/cdrom上,然后进入该目录就可以查看光驱里的内容了。
/proc这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 >; /proc/sys/net/ipv4/icmp_echo_ignore_all。
/root该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
proc文件系统
10
seq_file操作procfs步骤( seq_open 1)
I. 在proc文件下创建自己的文件 static inline struct proc_dir_entry *proc_create(
const char *name, umode_t mode, struct proc_dir_entry *parent,
create_proc_read_entry 和create_proc_entry接口在新版 本的内核中已经废弃
4
seq_file
内核通过在procfs文件系统下建立文件来向用户空间提供输出信息, 用户空间可以通过任何文本阅读应用查看该文件信息,但是procfs 有 一个缺陷,如果输出内容大于1个内存页,需要多次读,因此处理起来 很难,另外,如果输出太大,速度比较慢,有时会出现一些意想不到 的情况。
6
seq_file操作procfs的方式
single_open方式 此种方式为简单方式对应的释放函数为 single_release seq_open方式 此种方式为复杂方式对应的释放函数为 seq_release
7
seq_file操作procfs步骤( single_open 1)
I. 在proc文件下创建自己的文件
procfs
2
proc文件系统概要
虚拟文件系统
驻留于内存、不占用存储空间
创建和显示内核内部的资源视窗
数据是在内核运行过程中产生的
用于配置内核参数、查看内核结构体、从设备驱 动程序中收集统计信息、获取通用的系统信息 在系统启动过程中挂载在/proc目录
3
proc文件系统操作示例1
糟 糕 的 实 现 方 式
在结束时候被调用,完成一些清理工作
linux文件系统的组织结构
linux文件系统的组织结构Linux文件系统的组织结构采用树型结构,类似于Windows文件系统。
其主要的目录如下:1. 根目录(/): Linux文件系统的根目录,所有目录都是从根目录开始的。
2. bin目录(/bin): 存放系统的核心程序,包括各种系统命令和工具。
3. boot目录(/boot): 存放系统启动需要的文件,包括引导程序和内核。
4. dev目录(/dev): 存放设备文件,在Linux中一切设备都是文件,包括硬件设备、外部设备等。
5. etc目录(/etc): 存放系统的配置文件,包括密码文件、主机名等。
6. home目录(/home): 存放所有用户的home目录,包括个人设置、数据等。
7. lib目录(/lib): 存放系统的共享库文件,包括各种动态链接库。
8. media目录(/media): 用于挂载外部设备的目录,如U盘、CD/DVD等。
9. mnt目录(/mnt): 用于挂载文件系统的目录。
10. opt目录(/opt): 存放可选软件的安装目录。
11. proc目录(/proc): 存放系统内核信息和运行信息,如进程和内存使用情况。
12. root目录(/root): 默认的root用户的home目录。
13. sbin目录(/sbin): 存放系统管理员使用的系统命令。
14. srv目录(/srv): 存放服务器的数据文件。
15. sys目录(/sys): 存放设备驱动相关的信息。
16. tmp目录(/tmp): 存放各种临时文件,如进程间通信使用的文件、临时下载文件等。
17. usr目录(/usr): 存放系统软件和用户共享的文件。
18. var目录(/var): 存放系统的可变文件,如日志文件、邮件等。
以上是Linux文件系统的主要目录,其中一些目录又包含了更多子目录。
了解Linux文件系统的组织结构有助于用户更好地管理文件和文件夹。
proc详解
proc详解内容摘要:Linux系统上的/proc⽬录是⼀种⽂件系统,即proc⽂件系统。
Linux系统上的/proc⽬录是⼀种⽂件系统,即proc⽂件系统。
与其它常见的⽂件系统不同的是,/proc是⼀种伪⽂件系统(也即虚拟⽂件系统),存储的是当前内核运⾏状态的⼀系列特殊⽂件,⽤户可以通过这些⽂件查看有关系统硬件及当前正在运⾏进程的信息,甚⾄可以通过更改其中某些⽂件来改变内核的运⾏状态。
基于/proc⽂件系统如上所述的特殊性,其内的⽂件也常被称作虚拟⽂件,并具有⼀些独特的特点。
例如,其中有些⽂件虽然使⽤查看命令查看时会返回⼤量信息,但⽂件本⾝的⼤⼩却会显⽰为0字节。
此外,这些特殊⽂件中⼤多数⽂件的时间及⽇期属性通常为当前系统时间和⽇期,这跟它们随时会被刷新(存储于RAM中)有关。
为了查看及使⽤上的⽅便,这些⽂件通常会按照相关性进⾏分类存储于不同的⽬录甚⾄⼦⽬录中,如/proc/scsi⽬录中存储的就是当前系统上所有SCSI设备的相关信息,/proc/N中存储的则是系统当前正在运⾏的进程的相关信息,其中N为正在运⾏的进程(可以想象得到,在某进程结束后其相关⽬录则会消失)。
⼤多数虚拟⽂件可以使⽤⽂件查看命令如cat、more或者less进⾏查看,有些⽂件信息表述的内容可以⼀⽬了然,但也有⽂件的信息却不怎么具有可读性。
不过,这些可读性较差的⽂件在使⽤⼀些命令如apm、free、lspci或top查看时却可以有着不错的表现。
⼀、进程⽬录中的常见⽂件介绍/proc⽬录中包含许多以数字命名的⼦⽬录,这些数字表⽰系统当前正在运⾏进程的进程号,⾥⾯包含对应进程相关的多个信息⽂件。
[root@rhel5 ~]# ll /proctotal 0dr-xr-xr-x 5 root root 0 Feb 8 17:08 1dr-xr-xr-x 5 root root 0 Feb 8 17:08 10dr-xr-xr-x 5 root root 0 Feb 8 17:08 11dr-xr-xr-x 5 root root 0 Feb 8 17:08 1156dr-xr-xr-x 5 root root 0 Feb 8 17:08 139dr-xr-xr-x 5 root root 0 Feb 8 17:08 140dr-xr-xr-x 5 root root 0 Feb 8 17:08 141dr-xr-xr-x 5 root root 0 Feb 8 17:09 1417dr-xr-xr-x 5 root root 0 Feb 8 17:09 1418上⾯列出的是/proc⽬录中⼀些进程相关的⽬录,每个⽬录中是当程本⾝相关信息的⽂件。
Linux默认目录
Linux默认目录/ :该目录是处于Linux文件系统树形结构的最顶端,它是Linux文件系统的入口,所有的目录、文件、设备都在/之下。
/bin : 该目录存放着系统最常用的最重要的命令,相当于DOS下的内部命令,只不过它们是以独立的文件形式存在,比如: ls,cp,mkdir等命令,这个目录中的文件都是可执行的并且是普通用户都可以使用的命令,作为系统最基础的命令都放在这里/ust : 该目录是系统存放程序的地方,比如普通命令,帮助文件,安装的软件等,当我们安装一个linux发型的官方提供的软件包时,大多安装在这里,当有涉及服务器的配置文件时,会把配置文件安装在/etc目录中./usr目录下包括涉及字体目录/usr/share/fonts,帮助目录/ust/share/man或/usr/share/doc等./var : 该目录的内容是经常变动的,/var下有/var/log目录用来存放系统日志的目录,/var/www目录用来定义Apache服务站点存放目录./var/lib用来存放一些库文件/sbin : 该目录主要是存放的大多数都是涉及系统管理的命令,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的./root : linux的超级权限用户(系统管理员),root的主目录./home :普通用户的主目录都默认存放在该目录中,比如,有个用户叫wang,那它的主目录是/hone/wang,也可以用~wang表示./etc : 该目录是系统配置文件的所在地,一些服务器的配置文件也在这里,比如:用户帐号及木马配置文件等./dev :设备文件存储在该目录中,这个目录下是所有linux的外部设备文件,这些设备文件的功能类似于DOS下的.sys文件和Win下的.vxd文件.linux将设备当成文件使用,即将设备抽象化,这样极大地方便了我们对设备的操作控制,因此Linux中设备和文件是用相同的方法访问的./boot : Linux的内核及引导系统的程序所需要的文件都存放在该目录中,比如:vmlinuz ,initrd.img 等文件都位于这个目录中,在一般情况下,GRUB或LILO系统引导管理器在这个目录中./opt : 该目录是可选的软件包安装目录,有些软件包我们可以将它安装在该目录中./tmp :该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件./tmp就是用来存放这些临时文件的,/var/tmp目录和该目录的作用是相似的./lost+found : 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生的一些文件碎片就窜访在该目录中,当系统启动在过程中fsck工具会检查这里,并修复已经损坏的文件系统,有时系统发生问题,有很多文件被移到这个目录中,可能要用手工的方式来修复,或移到文件原来的位置上./lib : 该目录用于存放库文件,这个目录里存放着系统最基本的共享库,其作用蕾丝于Windows里的.dll 文件,几乎所有的应用程序都须要用到这些共享库./mnt : 该目录是用于存放挂载储存提供这个目录是让用户临时挂载别的文件系统,比如有cdrom等目录/proc :操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu,硬盘分区,内存信息等)寻访在这里,/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息,也就是说,这个目录的内容不在硬盘上而是在内存里./misc : 该目录可以用来存放杂项文件或目录,即那些用途或含义不明确的文件或目录可以存放在目录/media : 即插即用型存储设备的挂载点自动在该目录下创建,比如usb盘系统自动挂载后,会在这个目录下产生一个目录; CDROM/DVD自动挂载后,也会在这个目录中创建一个目录,类似于cdrom这个目录,该目录只有在最新的发行套件上才有./initrd : 系统在启动钱的内核是压缩的(这和ramdisk有关),当系统启动时需要解压缩,该目录就是解压缩时的临时目录,当启动完成后,又将该目录清空./usr/man : 该目录是Linux系统帮助文档的存放目录。
Linux 的dev目录详解和Linux系统各个目录的作用
Linux /dev目录详解在linux下,/dev目录是很重要的,各种设备都在下面。
下面简单总结一下:dev是设备(device)的英文缩写。
/dev这个目录对所有的用户都十分重要。
因为在这个目录中包含了所有Linux系统中使用的外部设备。
但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。
它实际上是一个访问这些外部设备的端口。
我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
Linux沿袭Unix的风格,将所有设备认成是一个文件。
关于一些特殊设备,我曾经总结过一些:/dev/null和/dev/zero:/index.php?uid-225738-action-viewspace-itemid-235339/dev/tty、/dev/console、/dev/pty、/dev/pts等:/index.php?uid-225738-action-viewspace-itemid-212419 设备文件分为两种:块设备文件(b)和字符设备文件(c)设备文件一般存放在/dev目录下,对常见设备文件作如下说明:/dev/hd[a-t]:IDE设备/dev/sd[a-z]:SCSI设备/dev/fd[0-7]:标准软驱/dev/md[0-31]:软raid设备/dev/loop[0-7]:本地回环设备/dev/ram[0-15]:内存/dev/null:无限数据接收设备,相当于黑洞/dev/zero:无限零资源/dev/tty[0-63]:虚拟终端/dev/ttyS[0-3]:串口/dev/lp[0-3]:并口/dev/console:控制台/dev/fb[0-31]:f ramebuffer/dev/cdrom => /dev/hdc/dev/modem => /dev/ttyS[0-9]/dev/pilot => /dev/ttyS[0-9]/dev/random:随机数设备/dev/urandom:随机数设备(PS:随机数设备,后面我会再写篇博客总结一下)/dev目录下的节点是怎么创建的?devf或者udev会自动帮你创建得。
linux各目录的含义与其作用
linux下的文件结构:/bin 二进制可执行命令/dev 设备特殊文件/etc 系统管理和配置文件/etc/rc.d 启动的配置文件和脚本/home 用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示/lib 标准程序设计库,又叫动态链接共享库,作用类似windows里的.dll文件/sbin 系统管理命令,这里存放的是系统管理员使用的管理程序/tmp 公用的临时文件存储点/root 系统管理员的主目录(呵呵,特权阶级)/mnt 系统提供这个目录是让用户临时挂载其他的文件系统。
/lost+found 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里/proc 虚拟的目录,是系统内存的映射。
可直接访问这个目录来获取系统信息。
/var 某些大文件的溢出区,比方说各种服务的日志文件/usr 最庞大的目录,要用到的应用程序和文件几乎都在这个目录。
其中包含:/usr/x11r6 存放x window的目录/usr/bin 众多的应用程序/usr/sbin 超级用户的一些管理程序/usr/doc linux文档/usr/include linux下开发和编译应用程序所需要的头文件/usr/lib 常用的动态链接库和软件包的配置文件/usr/man 帮助文档/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里/usr/local/bin 本地增加的命令/usr/local/lib 本地增加的库通常情况下,根文件系统所占空间一般应该比较小,因为其中的绝大部分文件都不需要经常改动,而且包括严格的文件和一个小的不经常改变的文件系统不容易损坏。
除了可能的一个叫/vmlinuz标准的系统引导映像之外,根目录一般不含任何文件。
所有其他文件在根文件系统的子目录中。
1. /bin目录/bin目录包含了引导启动所需的命令或普通用户可能用的命令(可能在引导启动后)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux中/proc目录下文件详解(2008-7-20 15:54)Linux中/proc目录下文件详解(一)--------------------------------------------------------------------------------/proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。
可以使用的文件随系统配置的变化而变化。
命令procinfo能够显示基于其中某些文件的多种系统信息。
以下详细描述/proc下的文件。
--------------------------------------------------------------------------------/proc/cmdline文件这个文件给出了内核启动的命令行。
它和用于进程的cmdline项非常相似。
示例:[root@localhost proc]# cat cmdlinero root=LABEL=/ rhgb quiet--------------------------------------------------------------------------------/proc/cpuinfo文件这个文件提供了有关系统CPU的多种信息。
这些信息是从内核里对CPU的测试代码中得到的。
文件列出了CPU的普通型号(386,486,586,686等),以及能得到的更多特定信息(制造商,型号和版本)。
文件还包含了以bogomips表示的处理器速度,而且如果检测到CPU的多种特性或者bug,文件还会包含相应的标志。
这个文件的格式为:文件由多行构成,每行包括一个域名称,一个冒号和一个值。
示例:[root@localhost proc]# cat cpuinfoprocessor : 0vendor_id : AuthenticAMDcpu family : 6model : 8model name : AMD Athlon(tm) XP 1800+stepping : 1cpu MHz : 1530.165cache size : 256 KBfdiv_bug : nohlt_bug : nof00f_bug : nocoma_bug : nofpu : yesfpu_exception : yescpuid level : 1wp : yesflags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 mmx fxsr sse syscall mmxext 3dnowext 3dnowbogomips : 2998.27--------------------------------------------------------------------------------/proc/devices文件这个文件列出字符和块设备的主设备号,以及分配到这些设备号的设备名称。
示例:[root@localhost /]# cat /proc/devicesCharacter devices:1 mem4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx6 lp7 vcs10 misc13 input14 sound29 fb36 netlink116 alsa128 ptm136 pts180 usbBlock devices:1 ramdisk2 fd3 ide09 md22 ide1253 device-mapper254 mdp--------------------------------------------------------------------------------/proc/dma文件这个文件列出由驱动程序保留的DMA通道和保留它们的驱动程序名称。
casade项供用于把次DMA控制器从主控制器分出的DMA行所使用;这一行不能用于其它用途。
示例:[root@localhost ~]# cat /proc/dma4: cascade--------------------------------------------------------------------------------/proc/filesystems文件[/color]这个文件列出可供使用的文件系统类型,一种类型一行。
虽然它们通常是编入内核的文件系统类型,但该文件还可以包含可加载的内核模块加入的其它文件系统类型。
示例:[root@localhost proc]# cat /proc/filesystemsnodev sysfsnodev rootfsnodev bdevnodev procnodev sockfsnodev binfmt_miscnodev usbfsnodev usbdevfsnodev futexfsnodev tmpfsnodev pipefsnodev eventpollfsnodev devptsext2nodev ramfsnodev hugetlbfsiso9660nodev mqueuenodev selinuxfsext3nodev rpc_pipefsnodev autofs--------------------------------------------------------------------------------/proc/interrupts文件这个文件的每一行都有一个保留的中断。
每行中的域有:中断号,本行中断的发生次数,可能带有一个加号的域(SA_INTERRUPT标志设置),以及登记这个中断的驱动程序的名字。
可以在安装新硬件前,像查看/proc/dma和/proc/ioports一样用cat命令手工查看手头的这个文件。
这几个文件列出了当前投入使用的资源(但是不包括那些没有加载驱动程序的硬件所使用的资源)。
示例:[root@localhost SPECS]# cat /proc/interruptsCPU00: 7039406 XT-PIC timer1: 6533 XT-PIC i80422: 0 XT-PIC cascade3: 0 XT-PIC uhci_hcd5: 108 XT-PIC VIA8233, uhci_hcd8: 1 XT-PIC rtc9: 0 XT-PIC acpi10: 0 XT-PIC ehci_hcd11: 17412 XT-PIC uhci_hcd, eth012: 140314 XT-PIC i804214: 37897 XT-PIC ide015: 60813 XT-PIC ide1NMI: 0ERR: 1--------------------------------------------------------------------------------/proc/ioports文件这个文件列出了诸如磁盘驱动器,以太网卡和声卡设备等多种设备驱动程序登记的许多I/O 端口范围。
示例:[root@localhost SPECS]# cat /proc/ioports0000-001f : dma10020-0021 : pic10040-0043 : timer00050-0053 : timer10060-006f : keyboard0070-0077 : rtc0080-008f : dma page reg00a0-00a1 : pic200c0-00df : dma200f0-00ff : fpu0170-0177 : ide101f0-01f7 : ide00376-0376 : ide10378-037a : parport0037b-037f : parport003c0-03df : vga+03f6-03f6 : ide003f8-03ff : serial0800-0803 : PM1a_EVT_BLK0804-0805 : PM1a_CNT_BLK0808-080b : PM_TMR0810-0815 : ACPI CPU throttle0820-0823 : GPE0_BLK0cf8-0cff : PCI conf1dc00-dcff : 0000:00:12.0dc00-dcff : via-rhinee000-e0ff : 0000:00:11.5e000-e0ff : VIA8233e400-e41f : 0000:00:10.0e400-e41f : uhci_hcde800-e81f : 0000:00:10.1e800-e81f : uhci_hcdec00-ec1f : 0000:00:10.2ec00-ec1f : uhci_hcdfc00-fc0f : 0000:00:11.1fc00-fc07 : ide0fc08-fc0f : ide1--------------------------------------------------------------------------------/proc/kcore文件这个文件是系统的物理内存以core文件格式保存的文件。
例如,GDB能用它考察内核的数据结构。
它不是纯文本,而是/proc目录下为数不多的几个二进制格式的项之一。
示例:暂无(因为会打印大量的乱码)--------------------------------------------------------------------------------/proc/kmsg文件这个文件用于检索用printk生成的内核消息。
任何时刻只能有一个具有超级用户权限的进程可以读取这个文件。
也可以用系统调用syslog检索这些消息。
通常使用工具dmesg或守护进程klogd检索这些消息。
示例:暂无--------------------------------------------------------------------------------/proc/ksyms文件这个文件列出了已经登记的内核符号;这些符号给出了变量或函数的地址。
每行给出一个符号的地址,符号名称以及登记这个符号的模块。
程序ksyms,insmod和kmod使用这个文件。
它还列出了正在运行的任务数,总任务数和最后分配的PID。
示例:暂无--------------------------------------------------------------------------------/proc/loadavg文件这个文件给出以几个不同的时间间隔计算的系统平均负载,这就如同uptime命令显示的结果那样。