一、系统目录结构 几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树。 windows:以多根的方式组织文件,系统目录与磁盘是强对应的。C盘下目录文件不可能与D盘下目录有关联或交集。 Linux:以单根的方式组织文件。Linux系统目录与磁盘等设备是不直接关联的,每个目录都可以挂载在不同的设备上。访问、etc、boot时可能是在访问完全不同的分区和磁盘。 PS:关于挂载Linux下的设备(如磁盘)如果不挂载,则看不到入口,无法使用。如要访问则需开个口,即挂载点(实质是一个目录)。开口的过程即挂载。开机会加载etcfstab文件,实现对系统分区的自动挂载。 历史简单了解:最早挂载在第一块硬盘上(井盖那么大,容量才1。5M),很快满了,后来就搞第二块,而且规定系统放1,用户放2,即usr挂载在第二块上。。。。如此延续 诞生后做了个标准:目录层次标准FHS网站可查www。pathname。comfhs做了两层规定:下放啥;usr和var这俩下放啥 用tree命令查看根目录下的内容〔rootlocalhost〕treeL1binusrbin英文二进制binaries的缩写,存储二进制文件命令(普通用户和超级用户可以执行)比如lscp等boot存放Linux的内核及系统引导程序开机加载文件devDevice设备文件etc存放系统所有的配置文件;Cent6服务启动命令存放目录home普通用户的家目录libusrliblibraries库启动系统和运行命令所需的共享库文件和内核模块lib64usrlib6464位的media多媒体文件存放目录mnt临时挂载点。比如U盘往里一插opt存放应用程序proc进程rootroot用户的家目录run正在进行进程相关信息的文件sbinusrsbinsystembinaries存储二进制文件命令(只有超级管理员才能使用)srvsystmp临时文件usr系统软件和用户相关程序var存放系统可变文件(系统日志等)19directories,0files注意:在Linux7系统中,bin,sbin,lib,lib64都以软链接的形式链接到usr目录下,例如:binusrbinsbinusrsbinlibusrliblib64usrlib64 二、重点掌握以下目录etc系统重要配置文件,以及常用服务配置文件var存放系统引导启动时产生的可变文件,文件通常动态更改的,例如:缓存目录,日志文件run系统启动后,运行的程序产生的运行时数据,包括进程的pid文件,锁文件等home普通用户的主目录,普通用户的家目录默认为HOMEUSERNAMEroot超级管理员的主目录,普通用户无权操作tmp存放临时文件,一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限boot存放系统引导时候需要的文件dev存放设备文件usr安装的软件,共享库,重要的子目录有usrbin用户命令目录usrsbin管理员命令目录usrlocal本地自定义安装的软件 etc目录etcsysconfignetworkscriptsifcfgens33配置网卡信息Cent7我们执行的nmtui图形化配置上网本质就是修改上述文件里的东西以后就可以用vim直接改这个文件etchosts本地域名解析文件比如系统输入网址www。baidu。com后优先找hosts,hosts文件里没有再找公网DNS自己打井吃水DNSDomainNameSystem域名系统作用:把浏览器里输入的域名解析为服务器的IP地址,然后才能找到服务器etcresolv。confDNS服务器配置etchostname主机名配置文件etcsysconfignetworkIP、掩码、网关、主机名配置etcfstab开机自动挂载。所有分区开机都会自动挂载设备要挂载才能用。系统开机时运行此文件,自动挂载了安装时的分区。比如插个u盘希望下次开机能直接访问就需要在此配置etcrcetcrc。detcrc。d启动、或改变运行级时运行的scripts或scripts的目录。etcinittabCent6修改runlevel〔rootweb01〕catetcinittabinittabisnolongerusedwhenusingsystemd。(Cent7不再使用了)etcexports设置NFS系统用的配置文件路径etcinit。d这个目录来存放系统启动脚本etcprofile全局系统环境配置变量etccsh。login,etccsh。cshrcetcissue用户登录输密码前的内容,默认输出版本内核信息etcmotd设置认证后的输出信息etcmtab当前安装的文件系统列表。由scripts初始化,并由mount命令自动更新。需要一个当前安装的文件系统的列表时使用,例如df命令etcgroup类似etcpasswd,但说明的不是用户而是组。etcpasswd用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息。etcshadow在安装了影子口令软件的系统上的影子口令文件。影子口令文件将etcpasswd文件中的加密口令移动到etcshadow中,而后者只对root可读。这使破译口令更困难。etcsudoerssudo命令的配置文件etcsyslog。conf系统日志参数配置etclogin。defs设置用户帐号限制的文件etcsecuretty确认安全终端,即哪个终端允许root登录。一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权。etcprintca类似etctermcap,但针对打印机。语法不同。etcshells列出可信任的shell。chsh命令允许用户在本文件指定范围内改变登录shell。提供一台机器FTP服务的服务进程ftpd检查用户shell是否列在etcshells文件中,如果不是将不允许该用户登录。etcxinetd。d如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在RedhatFedora中比较新的版本中存在。etcoptopt的配置文件etcX11XWindow系统(版本11)的配置文件etcsgmlSGML的配置文件etcxmlXML的配置文件etcskel默认创建用户时,把该目录拷贝到家目录下 usr目录 默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。usr目录相当于windows下的C:Windows目录usrlocal软件安装目录相当于C:Programusrbin普通用户使用的应用程序(重要)usrsbin管理员用户使用的应用程序(重要)usrlib库文件Glibc32bitusrlib64库文件Glibc64bitusrX11R6存放XWindows的目录;usrgames存放着XteamLinux自带的小游戏;usrdocLinux技术文档;usrinclude用来存放Linux下开发和编译应用程序所需要的头文件;usrlib存放一些常用的动态链接共享库和静态档案库;usrman帮助文档所在的目录;usrsrcLinux开放的源代码,就存在这个目录,爱好者们别放过哦;usrbin非必要可执行文件(在单用户模式中不需要);面向所有用户。usrlibusrbin和usrsbin中二进制文件的库。usrsbin非必要的系统二进制文件,例如:大量网络服务的守护进程。usrshare体系结构无关(共享)数据。usrsrc源代码,例如:内核源代码及其头文件。usrX11R6XWindow系统版本11,Release6。usrlocal本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin、lib、share。这是提供给一般用户的usr目录,在这里安装一般的应用软件; var目录varlogmessage系统日志信息,按周自动轮询(一周记一个按时间命名)varspoolcronroot定时器配置文件目录,默认按用户命名varlogsecure记录登陆系统存取信息的文件,不管认证成功还是认证失败都会记录varlogwtmp记录登陆者信息的文件,last,who,w命令信息来源于此varspoolclientmqueue当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此varspoolmail邮件目录vartmp比tmp允许的大或需要存在较长时间的临时文件。(虽然系统管理员可能不允许vartmp有很旧的文件。)varlib系统正常运行时要改变的文件。varlocalusrlocal中安装的程序的可变数据(即系统管理员安装的程序)。注意,如果必要,即使本地安装的程序也会使用其他var目录,例如varlock。varlock锁定文件。许多程序遵循在varlock中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件。其他程序注意到这个锁定文件,将不试图使用这个设备或文件。varlog各种程序的Log文件,特别是login(varlogwtmplog所有到系统的登录和注销)和syslog(varlogmessages里存储所有核心和系统程序信息。varlog里的文件经常不确定地增长,应该定期清除。varrun保存到下次引导前有效的关于系统的信息文件。例如,varrunutmp包含当前登录的用户的信息。varcache应用程序缓存数据。这些数据是在本地生成的一个耗时的IO或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。 dev目录 dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。 设备文件分为两种:块设备文件(b)和字符设备文件(c) 设备文件一般存放在dev目录下,sda系统的第一块磁盘sda1系统第一块磁盘的第一个分区sda2系统第一块次磁盘的第二个分区sda3系统第三块磁盘的第三块分区sdc系统的第三块磁盘sdc3系统第三快磁盘的第三个分区sde2系统第五块磁盘的第二个分区devcdrom光驱devrandom随机数devsdb1系统第二块磁盘的第一个分区特殊设备devnull它是空设备,也称为位桶(bitbucket)或者黑洞(blackhole)。你可以向它输入任何数据,但任何写入它的数据都会被抛弃。通常用于处理不需要的输出流。(当然,它也可以作为空的输入流)devzero该设备无穷尽地提供空字符(ASCIINUL,0x00),可以使用任何你需要的数目。它通常用于向设备或文件写入字符串0,用于初始化数据存储。(当然,也可作为输出流的接受容器) proc目录 虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。 例如:uptime、network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)procmeminfo查看内存信息procloadavg查看负载(系统繁忙程度指标)对应命令uptime当负载的数字和cpu核数相当的时候就是负载的一个临界点如一颗2核cpu到2的时候就是临界点三个数字分别对应是1分钟515分钟的负载procuptime就是用uptime的时候,会出现的资讯啦!proccpuinfo关于CPU的信息,如类型、厂家、型号和性能等。 特殊目录。和。。在每个目录下,都会固定存在两个特殊目录,分别是。和。。的目录。一个点代表当的是当前目录,两个点代表的是当前目录的上层目录。注意:在Linux下所有以点开始的文件都是隐藏文件,对于这类文件,只使用命令lsl是看不到的,必须要使用lsla才可以看到,如下所示:〔rootlocalhost〕lllatotal72drxrx。3rootroot4096Aug2713:56。drxrxrx。17rootroot224Aug1715:27。。rwrr。1rootroot23Aug2509:24001rwrr。1rootroot0Aug2713:561 三、文件路径定位 在我们开始操作文件前,首先需要对文件进行定位,比如:你要在哪,创建什么文件?你要将文件复制到什么地方?你要删除什么地方的文件?绝对路径和相对路径 Linux系统采用了目录树的文件组织结构,在Linux下每个目录或文件都可以从根目录处开始寻找,比如:usrbin目录。这种从根目录开始的全路径被称为绝对路径,绝对路径一定是以开头的。 就好比,咱们在中国写快递地址的时候,如果你往外省邮寄,北京上海 绝对路径得写具体地址:上海市浦东新区创智XX3207 相对路径你在叫外卖的时候呢:浦东新区创智XX3207 例进入opt目录〔rootdb04〕cdopt〔rootdb04opt〕lsla总用量1048592drwxrxrx。3rootroot40965月3106:05。当前目录drxrxrx。23rootroot40965月2111:11。。上层目录drwxrxrx。2rootroot409611月222013rhrwrr1rootroot10737418245月3106:05test。txt进入当前目录〔rootdb04opt〕cd。〔rootdb04opt〕pwdopt进入当前目录的上层目录〔rootdb04opt〕cd。。〔rootdb04〕pwd