第七节 Linux系统目录结构介绍

标签(空格分隔):Linux实战教学笔记


第1章 前言

  • windows目录结构

    C:\windows

    D:\Program Files

    E:\你懂的\精品

    F:\你懂的\动态图

  • linux 目录结构

    一切从根开始=====>

  • 这样的linux目录结构,那么可能同学们在初次接触Linux的时候,往往会觉得目录结构比较复杂,没有windows那样视窗简单明了的展示,从而感觉很迷茫。
  • 其实,Linux系统的目录结构知识同样是很简单的,只是Linux系统的应用场景多为服务器应用且为字符界面应用,并不像Windows系统的那种视窗的直观展示,但是,Linux的系统的目录结构确是很有规律性的组织的,下面就给大家一一道来。

1.1 Linux系统目录结构的基本特点介绍

  • linux目录:一切从“根”开始,“/”是所有目录的起点(定点):相对路径(目录)和绝对路径(目录)?
  • linux根下面的目录是一个有层次树状结构
  • 倒挂的一棵树
  • linux每个目录可以挂载在不同的设备(磁盘)上。windows不容易做到。

逻辑上所有目录(包括目录下的子目录)都在最高级别的目录“/”下,根(“/”)目录是linux系统中所有目录的起始点(丁点),根下面的目录及目录的子目录是一个有层次的树状结构,很像一颗倒挂着的一颗大树,这和Windows系统按照硬盘分区(C:D:E:)分割的目录结构是不同的(windows系统可以理解为多棵树,每个分区就是一颗独立的小树)。

linux系统中的这些不同的目录也是很特别的,不同的目录可以分布在不同的硬盘分区以及不同的硬盘设备上,这是windows的系统难以做到的,windows系统的不同分区都是独立存在的。

  • linux下面设备不挂载是看不到入口的,没有窗口没门的监狱,如果要设备被访问就必须有一个入口,这个入口就是挂载点,挂载点实质就是目录

以光驱设备====>/media/cdrom为例

/boot 等等开机自动挂载===>/etc/fstab

  • linux系统中的所有目录内容按照类别组织。例如,Linux下的应用程序,它的可执行程序可能在/usr/bin,而它的数据文件和帮助在/usr/share下,运行时加载的配置文件和服务启动命令却在/etc/下。

  • 如果同学们理解了上述两点,相信很快就能轻松的理解掌握Linux系统的目录结构了,进而感受Linux系统的独特的魅力所在。

内容小结

  1. linux系统的所有目录是一个有层次的倒着的树状目录结构,“/”根是所有目录的顶点。
  2. 不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备
  3. 所有的目录都是按照一定的类别有规律的组织和命名
  4. 相对路径:相对于当前路径下的路径

  1. 绝对路径:从根为起始点的路径



    /etc/init.d/iptables stop

提示:学习的意义就是练习归纳总结的能力,把书由厚变薄(先总结再扩展)

第2章 Unix系统目录结构的历史典故

提示:学习目录结构的历史典故,目的是让大家能够清晰的了解linux的目录结构。

发行版本==GNU/linux+GNU软件+其他的软件

1969年,Ken Thompson和Dennis

Ritchie在小型机PDP-7上发明了Unix。1971年,他们将主机升级到了PDP-11.

当时,他们使用一种叫做RK05的存储盘,盘的容量大约是1.5MB

由于硬盘的容量很小,因此没多久,操作系统存储盘数据(根目录)变的越来越大了,导致一块盘已经装不下数据了。于是,他们加上了第二盘RK05,并且作了规定,第一块盘专门用来存放系统程序相关,第二块盘专门存放用户自己的程序,因此,挂载的目录点取名为/usr。也就是说,根目录“/”挂载在第一块盘,“/usr”目录挂载在第二块盘。除此之外,两块盘里面的其他的目录结构是完全相同的,例如:第一块盘的目录(/bin,/sbin/lib/tmp...)都在/usr目录下重新出现一次(/bin,/sbin,/lib)

tmp 思想: 不要轻易删除东西,可以放在tmp目录下面。过1个月后再删除。

时间不长,第二块存储盘也满了,他们只好又加了第三盘RK05,挂载的目录取名为/home,并且做了规定,/usr用于存放用户的程序,/home用于存放用户的数据。

此后,这种目录结构起名和定义就这样延续了下来。随着设备的发展,硬盘的容量也越来越大,那么,各个目录的含义进一步得到了明确。

第3章 Linux 目录结构

3.1 目录层次标准FHS

  • FHS全称(Filesystem Hierarchy Standard),中文意思是目录层次标准,是linux的目录规范标准。
  • 详细点击查看
  • FHS定义了两层规范
  • 第一层:“/”目录下的各个目录应该放什么文件数据,例如:/etc目录下放置系统的配置文件,例如:/etc/exports,/etc/hosts,而/bin和/sbin放置程序及系统命令。
  • 第二层:是针对/usr(unix software resource|Secondary hierarchy)和/var(Variable data)这两个目录的子目录来定义。例如:/var/log下放置系统日志文件等
  • 提示:/var分区单独分出来,硬盘足够大。我们都有监控,剩余20%报警。

3.2 根目录结构

linux系统的目录结构最顶端是“/”,一切目录从根开始。 我们可以通过tree命令得到根(/)下的目录结构。



3.3小结:重要目录回顾

  • /dev 设备目录
  • /etc/ 系统配置2及服务配置文件,服务启动命令目录/etc/init.d
  • /proc 显示内核及进程信息的虚拟文件系统
  • /tmp 临时文件目录,
  • /home 普通用户家目录
  • /root 超级管理员家目录
  • /var 变化的目录,一般是日志文件(/var/log),cache目录。/var/log/messages,/var/log/secure
  • /usr 用户程序及数据,帮助文件,二进制命令等目录(usr/local/)
  • /bin 普通用户命令的目录
  • /sbin 和/usr/sbin/:超级用户命令的目录

第4章 重要子目录说明

列举一些常见且很重要的目录。这些是大家必须要熟记的。

4.1 必须要掌握的linux目录路径知识

  • 修改网卡配置文件
  • 配置文件路径:

    /etc/sysconfig/network-scripts/ifcfg-eth0

    (1)查看eth0(第二块eth1)

    (2)通过setup===>"network configuration"修改网卡配置就是再改这个文件







    (3)固定IP地址

    (4)重启网卡/etc/init.d/network restart(影响所有网卡)

    (5)ifdown eth0 && ifup eth0只针对eth0网卡

注意

  • 设置文件ifcfg-interface-name包含了初始化接口所需要的大部分周详的信息。其中interface-name将根据网卡的类型和排序而不同,一般名字为eth0,eth1,ppp0等,其中eth表示以太(eth0)类型网卡,0表示第一块网卡,1表示第二块网卡,而ppp0则表示第一个point-to-poirt protocol网络接口。在ifcfg文件中定义

    的各项目取决于接口类型。

    下面的值较为常见:
  • DEVICE=name,其中,name是物理设备名
  • IPADDR=addr,其中addr是IP地址
  • NETMASK=mask,其中,mask是网络掩码值
  • GATEWAY=addr,其中addr是网关地址
  • ONBOOT=answer,其中answer是yes(引导时激活设备)或no(引导时不激活设备)
  • USERCTL=answer,其中,answer是yes(非root用户能控制该设备)或no
  • BOOTPROTO=proto,其中,proto取下列值之一:none,引导时不使用协议;static静态分配地址;bootp,使用BOOTP协议,或dhcp,使用DHCP协议



上图配置实际上修改的是/etc/sysconfig/network-scripts/ifcfg-eth0文件



上图设置实际上修改的是/etc/resolv.conf这个文件

小结

1,linux客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)

2,linux客户端DNS也可以在/etc/resolv.conf里设置

3,网卡里的设置DNS优先于/etc/resolv.conf,如果重启网络网卡的dns会覆盖/etc/resolv.conf的设置

4,/etc/hosts:设定用户IP与名字(域名)的对应解析表,相当于本地LAN局域网内的DNS解析文件

5,/etc/sysconfig/network:可修改主机名及网卡启动,网关等配置。永久更改主机名,需同时修改以下两项:

(1)vi /etc/sysconfig/network

(2)hostname 主机名

  • /etc/fstab:开机自动挂载文件系统的一个列表(具体配置以后详说)

    思考: fstab一旦配置错误,会导致服务器无法启动。如何修复?

  • /etc/rc.local:用于存放开机自启动程序命令的文件(chkconfig 常用来管理yum/rpm安装的程序的服务的开机自启动/etc/init.d)

在开机时,linux会把/etc/rc.local里的内容执行一遍

  • /etc/inittab:设定系统启动时init进程将把系统设置成什么样的,runlevel运行级别及加载相关的级别对应启动文件设置
  • /etc/exports:NFS网络文件系统用的配置文件
  • /etc/init.d:这个目录是用来存放通过yum或rpm工具安装的软件的默认启动程序(启动脚本)的目录
  • /etc/xinit.d:如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录里。有些系统没有这个目录,比如Slackware,(无人值守pxe+kickstart安装系统时会用到/etc/xinit.d)
  • /etc/profile:系统全局环境变量,永久生效的配置文件

    (用户的环境变量:~/.bash_profile,~/.bashrc)

4.2 /etc/目录下的重要目录和文件

  • /etc/issue(/etc/issue.net):记录用户登录前显示的系统版本等信息
  • /etc/motd:登录提醒(里面写的任何东西都会在所有用户登录前显示出来)
  • /etc/redhat-release:包括一行声明RedHat版本号和名称的信息。
  • /etc/group:设定用户的组名与相关信息
  • /etc/passwd:用户账号信息文件
  • /etc/shadow:用户密码信息文件
  • /etc/gshadow:组密码文件
  • /etc/sudoers:可以执行使用sudo命令的配置文件(权限提升)
  • /etc/securetty:设定哪些中断可以让root登录
  • /etc/login.defs:所有用户登陆时的缺省配置
  • /etc/modprobe.conf:内核模块额外参数设定
  • /etc/rsyslog.conf:日志设置文件(仅限centos6.x)

4.3 其他目录

  • /lib:系统会使用到的函数库
  • /lib/modules:kernel的相关模块
  • /var/lib/rpm:rpm套件安装处
  • /usr/bin:这个目录是可执行程序的目录;当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。
  • lib64:库文件存放目录
  • /usr/sbin:这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令;相似目录是/sbin或/usr/local/sbin或/usr/X11R6/sbin等;
  • /usr/local:这个目录一般用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。
  • /usr/local/bin:用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接
  • /usr/local/sbin:系统全局环境目录,可放置一些不需要加路径执行的脚本
  • /usr/share:系统共用的东西存放地,比如/usr/share/doc和/usr/share/man帮助文件
  • /usr/src:内核源码存放目录,比如下面有内核源码目录,比如linux,linux-2.xxx.xx目录等。

1,rpm -ivh(存在rpm包,又无法使用yum的时候)

2,yum install

(习惯:线上对外的服务器很少安装apache,nginx,mysql,功能性软件会用yum)

3,源码(./configure,make,make install),定制。大中小企业重要服务。

门户:源码---定制RPM包---制作yum仓库----yum安装

  • /usr/bin:使用者可执行的binary file目录
  • /usr/local/bin:使用者可执行的binary file目录
  • /usr/lib:系统会使用到的函数库
  • /usr/local/lib:系统会使用到的函数库

4.4 /var目录下的路径知识

  • /var:日志文件
  • /var/log:各种系统日志存放地
  • /var/log/messages:系统信息默认日志文件,非常重要。按周自动轮循
  • /var/log/secure:记录登入系统存取信息的文件,按周自动轮循,例如:pop3,ssh,telnet,ftp都会记录在此。系统安全的日志文件
  • /var/spool:定时任务默认路径,按用户名命名的文件(/var/spool/cron/root)
  • var/spool/clientmqueue:sendmail临时邮件文件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等。工作中偶尔会因为该目录文件太多,导致/var所在的分区inode数量被消耗尽,无法写入文件的情况(centos6.x不会装sendmail,所以不会有这个问题)

4.5 /proc下的重要路径知识

top:看cpu等

  • /proc:虚拟目录,是内存的映射,内核和进程的虚拟文件系统目录
  • /proc/version:内核版本
  • /proc/sys/kernel:系统内核功能
  • /proc/sys/net/ipv4:修改proc的配置时临时生效。

    (/etc/sysctl.conf内核参数里配置才是永久生效。两个路径的修改效果是一样的。net.ipv4.tcp_tw_reuse=1实际上就是修改/proc/sys/net/ipv4/tcp_tw_reuse的内容)
  • /proc/cpuinfo:关于处理器的信息,如类型,厂家,型号和性能等
  • /proc/meminfo:系统内存信息,free -m
  • /proc/devices:当前运行内核所配置的所有设备清单
  • /proc/dma:当前正在使用的DMA通道
  • /proc/filesystems:当前运行内核所配置的文件系统
  • /proc/initerrupts:正在使用的中断,和曾经有多少个中断。
  • /proc/ioports:当前正在使用的I/O端口。
  • /proc/loadavg:系统负载平均值信息(系统的繁忙情况,比较准确,但是不够细致系统性能指标),uptime的结果。(负载值不要超过CPU的核数。看负载top,uptime,w

  • /proc/mounts:设备的挂载信息,df -h类似

4.6 必须掌握的路径及文件


  1. /etc/sysconfig/network-scripts/ifcfg-eth0(第一块网卡配置文件)
  2. /etc/resolv.conf(DNS的配置文件,网卡配置文件优先resolv.conf)
  3. /etc/hosts(ip与域名(主机名)解析表)
  4. /etc/sysconfig/network(主机)
  5. /etc/fstab(开机自动挂载列表)
  6. /etc/rc.local(开机自启动文件,自启动命令,脚本)
  7. /etc/inittab (Linux开机运行级别配置文件)
  8. /etc/init.d(服务启动命令脚本目录)
  9. /etc/profile(全局环境变量)
  10. /etc/bashrc(别名)
  11. /usr/local(编译安装软件默认安装目录)
  12. /var/log/message(系统日志)
  13. /var/log/secure(系统安全日志)
  14. /var/spool/cron/root(定时任务,root目录)
  15. /proc/cpuinfo(系统cpu信息)
  16. /proc/meminfo(系统内存信息)
  17. /proc/loadavg(系统cpu负载程度)
  18. /proc/mounts(系统挂载信息)

4.7讨论:cpu什么情况下算是负载很繁忙?

当cpu平均负载率大于CPU的核数的时候,我们就可以说,服务器cpu的负载已经很繁忙了。

Linux实战教学笔记07:Linux系统目录结构介绍的更多相关文章

  1. Linux实战教学笔记04:Linux命令基础

    第四节:Linux命令基础 标签(空格分隔):Linux实战教学笔记 第1章 认识操作环境 root:当前登陆的用户名 @分隔符 chensiqi:主机名 -:当前路径位置 用户的提示符 1.1 Li ...

  2. Linux实战教学笔记12:linux三剑客之sed命令精讲

    第十二节 linux三剑客之sed命令精讲 标签(空格分隔): Linux实战教学笔记-陈思齐 ---更多资料点我查看 1,前言 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件 ...

  3. Linux实战教学笔记18:linux三剑客之awk精讲

    Linux三剑客之awk精讲(基础与进阶) 标签(空格分隔): Linux实战教学笔记-陈思齐 快捷跳转目录: * 第1章:awk基础入门 * 1.1:awk简介 * 1.2:学完awk你可以掌握: ...

  4. Linux实战教学笔记11:linux定时任务

    第十一节 linux定时任务 标签(空格分隔): Linux实战教学笔记 ---更多资料点我查看 1.1 定时任务Crond介绍 Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种 ...

  5. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  6. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  7. Linux实战教学笔记19:Linux相关网络知识梳理

    第十九节 Linux相关网络知识梳理 标签(空格分隔): Linux实战教学笔记-陈思齐 一,前言 一个运维有时也要和网络打交道,所以具备最基本的网络知识,对一个运维人员来说是必要的.但,对于我们的工 ...

  8. Linux实战教学笔记08:Linux 文件的属性(下半部分)

    第八节 Linux 文件的属性(下半部分) 标签(空格分隔): Linux教学笔记 ---更多相关资料请点我查看 第1章 链接的概念 在linux系统中,链接可分为两种:一种为硬链接(Hard Lin ...

  9. Linux实战教学笔记

    Linux实战教学笔记01:计算机硬件组成与基本原理 Linux实战教学笔记02:计算机系统硬件核心知识 Linux实战教学笔记03:操作系统发展历程及系统版本选择 Linux实战教学笔记04:Lin ...

随机推荐

  1. NYOJ 1007

    在博客NYOJ 998 中已经写过计算欧拉函数的三种方法,这里不再赘述. 本题也是对欧拉函数的应用的考查,不过考查了另外一个数论基本定理:如何用欧拉函数求小于n且与n互质所有的正整数的和. 记eule ...

  2. Hibernatel框架关联映射

    Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...

  3. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

  4. 【原】FMDB源码阅读(一)

    [原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...

  5. Android总结之链式调用(方法链)

    前言: 最近在学习总结Android属性动画的时候,发现Android的属性动画设计采用了链式调用的方式,然后又回顾了一下了以前接触的开源框架Glide也是采用链式调用的方式,还有最近火的一塌糊涂的R ...

  6. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  7. CSS 3学习——文本效果和@font-face

    文本效果 关于文本效果,这里仅仅记录得到大多数浏览器支持的几个属性,分别是: text-overflow text-shadow word-break word-wrap text-overflow ...

  8. PHP设计模式(五)建造者模式(Builder For PHP)

    建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式. 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用 ...

  9. thinkphp-无限分类下根据任意部门获取顶级部门ID

    根据所得到的部门编号获取顶级部门ID: 参数 - department_id 表格组织架构: tab_departments department_id parent_id name 1 1 顶级 2 ...

  10. Jenkins配置MSBuild实现自动部署(MSBuild+SVN/Subversion+FTP+BAT)

    所要用到的主要插件: [MSBuild Plugin] 具体操作: 1.配置MSBuild的版本 [系统管理]->[Global Tool Configuration]->[MSBuild ...