Linux系统目录结构
包括了几近所的文件目录。进入的最简单方法是:cd /。注意与根用户的区分。根用户是指系统管理员root,又为超级用户。
这个目录,包括了在引导进程中所必须的文件,引导程序的相干文件(例如grub,lilo和相应的配置文件和Linux操作系统内核相干文件(例如vmlinuz等1般都寄存在这里。在最开始的启动阶段,通过引导程序将内核加载到内存,完成内核的启动(这个时候,虚拟文件系统还不存在,加载的内核虽然是从硬盘读取的,但是没经过Linux的虚拟文件系统,这是比较底层的东西来实现的。然后内核自己创建好虚拟文件系统,并且从虚拟文件系统的其他子目录中(例如/sbin 和 /etc加载需要在开机启动的其他程序或服务或特定的动作(部份可以由用户自己在相应的目录中修改相应的文件来配制。如果我们的机器中包括多个操作系统,那末可以通过修改这个目录中的某个配置文件(例如grub.conf来调剂启动的默许操作系统,系统启动的择菜单,和启动延迟等参数。
寄存大多触及系统管理的命令(例如引导系统的init程序,是超级权限用户root的可履行命令寄存地,普通用户无权限履行这个目录下的命令(但是时普通用户也可能会用到。这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin等目录是相似的,我们要记住,凡是目录sbin中包括的都是root权限才能履行的,这样就好了。
与/sbin目录不同的是该目录下的命令root用户与普通用户都可使用。比如ls、cp、mkdir等命令;类似的目录还/usr/bin,/usr/local/bin等等。这个目录中的文件都是可履行的、普通用户都可使用的命令。作为基础系统所需要的最基础的命令就是放在这里。跟/usr/bin目录像比,对系统来讲这个目录是比不可少的,由于即便只有包括有/的分区被挂载,也需要这些命令可被履行。这个目录包括的程序多是启动程序所依赖的。
注:在centos7中,根目录下的bin目录只是个指向/usr/bin的软连接。
此目录下包括系统启动和在根文件系统运行命令所需要的内核模块和同享库。类似于windows系统里的动态链接库(DLL)文件。理说,这里寄存的文件应当是/bin目录下程序所需要的库文件的寄存地,也不排除1些例外的情况。类似的目录还/usr/lib,/usr/local/lib等等。
注:在centos7中lib与lib64跟别连接到/usr/lib和/usr/lib64文件,这两个文件的内容有所不同。
在Linux中装备都是以文件情势出现,这里的装备可以是硬盘,键盘,鼠标,网卡,终端,等装备,通过访问这些文件可以访问到相应的装备。装备文件可使用mknod命令来创建,具体参见相应的命令;而为了将对这些装备文件的访问转化为对装备的访问,需要向相应的装备提供装备驱动模块(1般将装备驱动编译以后,生成的结果是1个*.ko类型的2进制文件,在内核启动以后,再通过insmod等命令加载相应的装备驱动以后,我们就能够通过装备文件来访问装备了)。1般来讲,想要Linux系统支持某个装备,只要个东西:相应的硬件装备,支持硬件的驱动模块,和相应的装备文件。
在Linux机器上,用户主目录通常直接或间接地置在此目录下。其结构通常由本地机的管理员来决定。通常而言,系统的每一个用户都自己的主目录,目录以用户名作为名字寄存在/home下面(例如user1用户,其主目录的名字为/home/user1。该目录中保存了用户的绝大多数文件(用户自己的配置文件,定制文件,文档,数据等),root用户除外(参见后面的/root目录。由于这个目录包括了用户实际的数据,通常系统管理员为这个目录单独挂载1个独立的磁盘分区,这样这个目录的文件系统格式便可能和其他目录不1样了(虽然表面上看,这个目录还是属于根目录的1棵子树上),有益于数据的保护。
系统管理员(就是root用户或超级用户)的主目录比较特殊,不寄存在/home中,而是直接放在/root目录下了,缘由是如果系统只挂载/目录,则要是root的主目录放在/home下,则会造成root用户没法访问其主目录。
系统和程序1般都可以通过修改相应的配置文件,来进行配置。例如,要配置系统开机的时候启动那些程序,配置某个程序启动的时候显示甚么样的风格等等。通常这些配置文件都集中寄存在/etc目录中,所以想要配置甚么东西的话,可以在/etc下面寻觅我们可能需要修改的文件。1些大型套件,如X11,在 /etc 下它们自己的子目录。系统配置文件可以放在这里或在 /usr/etc。不过所程序总是在 /etc 目录下查找所需的配置文件,你也能够将这些文件链接到目录 /usr/etc。另外,还1个需要注意的常见现象就是,当某个程序在某个用户下运行的时候,可能会在该用户的家目录中生成1个配置文件(1般这个文件最开始就是/etc下相应配置文件的拷贝,寄存相应于“当前用户”的配置,这样当前用户可以通过配置这个家目录的配置文件,来改变程序的行动,并且这个行动只是该用户特的。缘由就是:1般来讲1个程序启动,如果需要读取1些配置文件的话,它会首先读取当前用户家目录的配置文件,如果存在就使用;如果不存在它就到/etc下读取全局的配置文件进而启动程序。就是这个配置文件不自动生成,我们手动在自己的家目录中创建1个文件的话,也有许多程序会首先读取到这个家目录的文件并且以它的配置作为启动的选项(例如我们可以在家目录中创建vim程序的配置文件.vimrc,来配置自己的vim程序。
这个目录对系统来讲也是1个非常重要的目录,其地位类似Windows上面的”Program Files”目录。在之前/usr目录像当于现在的/home目录,所以现在对/usr目录的1个叫法为:User System Resource。安装程序的时候,默许就是安装在此文件内部某个子文件夹内。输入命令后系统默许履行/usr/bin下的程序(固然,条件是这个目录的路径已被添加到了系统的环境变量中。此目录通常也会挂载1个独立的磁盘分区,它应保存同享只读类文件,这样它可以被运行Linux的不同主机挂载。
这个目录功能类似/lib目录,这里寄存的文件应当是/bin目录下程序所需要的库文件的寄存地,也不排除1些例外的情况。
此目录像当于根文件系统下的对应目录(/bin,非启动系统,非修复系统和非本地安装的程序1般都放在此目录下。
此目录像当于根文件系统下的对应目录(/sbin,保存系统管理程序的2进制文件,并且这些文件不是系统启动或文件系统挂载 /usr 目录或修复系统所必须的。
在此目录下不同的子目录中保存了同1个操作系统在不同构架下工作时特定利用程序的同享数据(例如程叙文档信息)。使用者可以找到通常放在 /usr/doc 或 /usr/lib 或 /usr/man 目录下的这些类似数据。
linux下开发和编译利用程序所需要的头文件1般都寄存在这里,通过头文件来使用某些库函数。默许来讲这个路径被添加到了环境变量中,这样编译开发程序的时候编译器会自动搜索这个路径,从中找到你的程序中可能包括的头文件。
当我们下载1个程序源代码,编译并且安装的时候,如果不特别指定安装的程序路径,那末默许会将程序相干的文件安装到这个目录的对应目录下。例如,安装的程序可履行文件被安装(安装实质就是复制到了/usr/local/bin下面,此程序(可履行文件所需要依赖的库文件被安装到了/usr/local/lib目录下,被安装的软件如果是某个开发库(例如Qt,Gtk等那末相应的头文件可能就被安装到了/usr/local/include中等等。也就是说,这个目录寄存的内容,1般都是我们后来自己安装的软件的默许路径,如果择了这个默许路径作为软件的安装路径,被安装的软件的所文件都限制在这个目录中,其中的子目录就相应于根目录的子目录。
这是1个特殊的目录,它一样是1个虚拟文件系统。通过这个目录下的各个文件,可以查看系统的内核信息。
1些自定义软件包或第3方工具,就能够安装在这里。
这个目录1般是用于寄存挂载贮存装备的挂载目录的,比如磁盘,光驱,网络文件系统等,当我们需要挂载某个磁盘装备的时候,可以把磁盘装备挂载到这个目录上去,这样我们可以直接通过访问这个目录来访问那个磁盘了。可以在/mnt目录下面多建立几个子目录,挂载的时候挂载到这些子目录上面,也能够在任意位置设置挂在点,但是不建议这么做。
挂载的媒体装备目录,1般可移动装备挂载到这里,例如cdrom,loppy和cdrecord等。
此目录下文件的大小可能会改变,如缓冲文件,日志文件,缓存文件,等1般都寄存在这里。
该目录寄存系统中的1些临时文件,文件可能会被系统自动清空。的系统直接把tmpfs类型的文件系统挂载到这个目录上,tmpfs文件系统由Linux内核支持,在这个文件系统中的数据,实际上是内存中的,由于内存的数据断电易失,当系统重新启动的时候我们就会发现这个目录被清空了。
当系统崩溃的时候,在系统修复进程中需要恢复的文件,可能就会在这里被找到了,这个目录1般为空。
以上目录,是最多见的重要目录。其中,有些目录初学者容易混淆,这里简单辨别1下:
/bin,/sbin与/usr/bin,/usr/sbin:
/bin1般寄存对用户和系统来讲“必须”的程序(2进制文件)。
/sbin1般寄存用于系统管理的“必须”的程序(2进制文件,1般普通用户不会使用,根用户使用)。
/usr/bin1般寄存的只是对用户和系统来讲“不是必须的”程序(2进制文件)。
/usr/sbin1般寄存用于系统管理的系统管理的不是必须的程序(2进制文件)。
/lib与/usr/lib:
/lib和/usr/lib的区分类似/bin,/sbin与/usr/bin,/usr/sbin。
/lib1般寄存对用户和系统来讲“必须”的库(2进制文件)。
/usr/lib1般寄存的只是对用户和系统来讲“不是必须的”库(2进制文件)。上一篇 JQuery小练习