linux 系统目录结构:
1,linux的所有目录结构是一个有层次的倒挂着的树形目录结构。
2,根“/”是所有目录的顶点。
3,目录结构和分区设备是没有关系的,也就是不通的目录可以跨越不同的磁盘设备或分区
4,所有的目录都是按照一定的类别有规律的组织和命名的。
windows系统目录结构:
1,c:\windows系统所在目录c:\program files默认软件安装的目录。
2,d:\program files我们自己选择安装目录。
相对路径和绝对路径:
绝对路径:从根开始的就是绝对路径。
相对路径:从当前的路径开始,即./
FHS
FHS依据文件系统使用的频繁与否与是否允许使用者随意更动,而将目录定义成四种交互作用的形态。
可分享的(shareable) |
不可分享的(unshareable) |
|
不变的(static) |
/usr(软件放置处) |
/etc(配置文件) |
/opt(第三方协议软件) |
/boot(开机与核心档) |
|
可变动的(variable) |
/var/mail(使用者邮件信箱) |
/var/run(程序相关) |
/var/spool/news(新闻组) |
/var/lock(程序相关) |
可分享的:可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载用的目录。
不可分享的:自己机器上面运作的装置文件或者是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
不变的:有些数据是不会经常变动的,跟随着distribution(发行版)而不变动,例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等。
可变动的:经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
事实上,FHS真对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
1,/(root,跟目录):与开机系统有关。
2,/usr(unix software resource):与软件安装/执行有关。
3,/var(variable):与系统运作过程有关。
根目录“/”的意义与内容:
1,所有目录都是由根目录衍生出来的(根目录是整个系统最重要的一个目录)
2,与开机/还原/系统修复等动作有关。(由于系统开机时需要特定的开机软件、核心文件、开机所需程序、函式库等等文件数据,若系统出现错误时,跟目录也必须要包含有能够修复文件系统的程序才行)
/bin系统有很多放置执行文件的目录,但/bin比较特殊,因为/bin放置的是在单人维护模式下还能够被操作的指令,在/bin底下的指令可以被root与一般账号所使用,主要有:cat,chmod,mv,cp等常用指令
/boot这个目录主要在放置开机会使用到的文件,引导程序文件,包括linux核心文件以及开机所需配置文件等,如果使用的是grub这个开机管理程序,则还会存在/boot/grub这个目录
/dev在linux系统上,任何装置与接口设备都是以文件的形态存在于这个目录当中的,你只要透过存取这个目录底下的某个文件,就等于存取某个装置。
/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]framebuffer
/dev/cdrom==》/dev/hdc
/dev/modem==》/dev/ttyS[0-9]
/dev/pilot==》/dev/ttyS[0-9]
/dev/random随机数设备
/dev/urandom随机数设备
/etc特定主机,系统范围内的配置文件
/etc/rc或/etc/rc.d启动,或改变运行级时运行的scripts或scripts目录
/etc/hosts本地域名解析文件
/etc/sysconfig/networkIP、掩码、网关、主机名配置
/etc/resolv.confDNS服务器配置
/etc/fstab开机自动挂载系统,所有分区开机都会自动挂载
/etc/inittab设定系统启动时init进程把系统设置成什么样的runlevel以及加载相关的启动文件配置
/etc/exports设置NFS系统用的配置文件路径
/etc/init.d这个目录存放系统启动脚本
/etc/profile全局系统环境配置变量
/etc/issue认证前的输出信息,默认输出版本内核信息
/etc/motd设置认证后的输出信息
/etc/mtab当前安装的文件系统列表,由scripts初始化,并由mount命令自动更新,需要一个当前安装的文件系统列表时使用,例如df命令
/etc/group类似/etc/passwd,但说明的不是用户而是组
/etc/passwd 用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息
/etc/shadow在安装了影子口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd文件的加密口令移动到/etc/shadow中,而后者只对root可读,这使破译口令更困难
/etc/sudoers可以sudo命令的配置文件
/etc/syslog.conf系统日志参数配置
/etc/login.defs上设置用户账号限制的文件
/etc/securetty确认安全终端,即哪个终端允许root登录,一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权
/etc/printcap类似/etc/termcap,但真对打印机,语法不同
/etc/shells列出可信任的shell命令允许用户在本文件指定范围内改变登录shell提供一台机器FTP服务的服务进程ftpd检查shell是否列在/etc/shells文件中,如果不是将不允许该用户登录
/etc/xinetd.d如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如slackware。有些老版本也没有。在redhat fedora中比较新的版本中存在
/etc/opt/opt/的配置文件
/etc/X11X_Window系统(版本11)的配置文件
/etc/sgml/SGML的配置文件
/etc/xmlXML的配置文件
/etc/skel默认创建用户时,把该目录拷贝到家目录下
/home这是系统默认的用户家目录,在你新增一个一般使用者账号时,默认的用户家目录都会规范到这里来,比较重要的是,家目录有两种代号:
~:代表目前这个用户的家目录
~linux:代表linux的家目录
/lib系统函式库非常的多,而/lib放置的则是在开机时会用的函式库,已经在/bin或/sbin底下的指令会呼叫的函式库。什么是函式库?你可以将他想成是“外挂”,某些指令必须要有这些“外挂”才能顺利完成程序执行。尤其重要的是/lib/modules这个目录,因为该目录会放置核心相关的模块(驱动程序)
/mdia包括软盘、光盘、DVD等装置暂时挂载于此
/mnt暂时挂载某些额外的装置
/opt可选应用软件包
/root系统管理员(root)的家目录
/sbinlinux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他用户最多只能用来查询,放在/sbin底下的外开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些服务器软件程序,一般则放置到/usr/sbin当中,至于本机自行安装的软件所产生的系统执行文件(system binary)则放置到/usr/local/sbin当中了,常见的指令包括:fdis、init、mkfs等等
/srvsrv可以视为“service”的缩写,是一些网络服务,启动之后,这些服务
所需要取用的数据
/tmp临时文件,在系统重启时目录中文件不会被保留
/lost+found在ext3文件系统中,当系统意外奔溃或机器意外关机,会产生一些文件碎片在这里,并修复已经损坏的文件系统。当系统发生问题,可能会有文件被移动到这个目录中,可能需要用手工的方式来修复,或移动文件到原来的位置上。
/proc这个目录本身是一个“虚拟文件系统”他放置的数据都是在内存当中,例如系统核心、行程信息(process)、周边装置的状态及网络状态等等,因为这个目录下的数据都是再内存当中,所以本身不占任何硬盘空间。
/proc/meminfo查看内存信息
/proc/loadavgtop以及uptime,上头的三个平均数值就是记录在此
/proc/uptime就是用uptime的时候,会出现的资讯
/proc/cpuinfo关于处理器的信息
/proc/cmdline加载kernel时所下达相关参数。
/proc/filesystems目前系统以及加载的文件系统
/proc/interrupts目前系统上面的IRQ分配状态
/proc/ioports目前系统上面各个装置所配置的I/O位址
/proc/kcore这个就是内存大小
/proc/modules目前我们的linux以及加载的模块列表,也可以想成是驱动程序
/proc/mount系统已经挂载的数据,就是用mount这个命令呼叫出来的数据
/proc/swaps到底系统加载的内存在哪里,使用掉的partition就记录在此了
/proc/partitions使用fdisk -l会出现目前所有到的partition,在这个文件中也有记录
/proc/pci在PCI汇流排上面,每个装置的详细情况,可用lspci来查阅
/proc/version核心的版本,就是用uname -a 显示的内容
/proc/bus/*一些汇流排的装置,还有U盘的装置也记录在这
/sys这个目录其实跟/proc非常类似,也是一个虚拟文件系统,主要记录与核心相关的信息
不可与根目录分开的目录(与开机过程有关)
根目录与开机有关,开机过程中仅有根目录会被挂载,其他分割槽则是开机完成之后才会持续的进行挂载的行为,
/etc:配置文件;/bin:重要执行档;/dev:所需要的装置文件;/lib:执行档所需要的函式库与核心所需的模块;/sbin:重要的系统执行文件
/usr的意义与内容:
1,依据FHS的基本定义,/usr里面放置的数据属于可分享的与不可变动的(shareable,static),可以透过网络进行分割槽的挂载来分享给局域网内的其他主机来使用。
2,FHS建议所有软件开发者,应该将他们的数据合理的分别放置到这个目录下的次目录,而不要自行建立该软件自己的独立目录。
3,所有系统默认的软件(distribution发布者提供的软件)都会放置到/usr底下,因此这个目录有点类似Windows系统的“C:\WINDOWS+C:\Program files”这两个目录的综合体。
/usr默认软件都会存于该目录下
/usr/X11R6存放X-windows的目录
/usr/games存放着XteamLinux自带的小游戏
/usr/doclinux技术文档
/usr/include用来存放linux下开放和编译应用程序所需要的头文件
/usr/lib存放一些常用的动态链接共享库和静态档案库
/usr/man帮助文档所在的目录
/usr/srclinux开放的源代码,就存在这个目录
/usr/sbin非必要的系统二进制文件,例如:大量网络服务的守护进程。
/usr/share体系结构无关(共享)数据
/usr/local本地数据的第三层次,具体到本台主机
/var的意义与内容:
/var目录主要真对常态性变动的文件,包括缓存(cache)、登录档(log file)以及某些软件运作所产生的文件,包括程序文件(lock file ,run file)或者MySQL数据库的文件等,所以/var在系统运作后才会渐渐占用硬盘容量的目录
/var系统一般运行时候要改变的数据
/var/log/message日志信息,按周自动轮询
/var/spool/cron/root定时器配置文件目录,默认按用户命名
/var/log/secure记录登录系统存取信息的文件,不管认证成功还是认证失败都会记录
/var/log/wtmp记录登录者信息的文件,last、who、w命令信息来源于此
/var/spool/clientmqueue当邮件服务未开启时,所有应发给系统管理员的邮件都将堆放在此
/var/spool/mail邮件目录
/var/tmp比/tmp允许的大或需要存在较长时间的临时文件(虽然系统管理员可能不允许/var/tmp有很旧的文件)
/var/lib系统正常运行时要改变的文件
/var/local/usr/local中安装的程序的可变数据(即系统管理员安装的程序)注意:如果必要,即使本地安装的程序也会使用其他/var目录,例如 /var/lock
/var/lock锁定文件,许多程序遵循在/var/lock中产生一个锁定文件的约定,以支持他们正在使用某个特定的设备或文件,其他程序注意到这个锁定文件,将不试图使用这个设备或文件
/var/log各种程序的log文件,特别是login(/var/log/wtmp log所有到系统的登录和注销)和syslog(/var/log/messages 里存储所有核心和系统程序信息)/var/log里的文件经常不确定地增长,应该定期清楚
/var/run保存到下次引导前有效的关于系统的信息文件。例如,/var/run/utmp包涵当前登录的用户信息
/var/cache应用程序缓存数据,这些数据是在本地生成的一个耗时的I/O或计算结果,应用程序必须能够再生或恢复数据,缓存的文件可以被删除而不导致数据丢失