首页 > 代码库 > day 2 Linux目录结构

day 2 Linux目录结构

Linux系统的目录结构的基本介绍:
1)在逻辑上的所有目录(包括目录下的子目录)都在最高级别的目录“/”下。
根(/)目录是Linux系统中所有目录的起始点(顶点),根下面的目录及子目录是一个有层次的树状结构很像一颗倒挂着的一棵大树,这和WINDOWS系统按照硬盘分区(C,D,E)分割的目录结构是不同的(windows可以理解为多棵树,每个分区就是一颗独立的小树)
Linux系统中的这些不同多目录也是很特别的,不同的目录可以分布在不同的硬盘分区以及不同的硬盘设备上。这是windows系统难以做到的,windows系统的不同分区都是独立存在的。
linux目录的特点:
1、根/是所有目录的顶点。
2、目录结构像一颗倒挂的树。
3、目录和磁盘分区树没有关联的。
4、/下不同的目录可能会对应不同的分区或磁盘
Linux里设备不挂载是看不到入口的,类似没有窗户没门的监狱。
如果希望设备被访问,就必须给这个设备一个入口。
这个入口就叫做挂载点,挂载点的表现实质是一个目录。
mount
光驱也是一种设备 /dev/cdrom
mount /dev/cdrom /mnt
day 1 学习了思想和方法,装了虚拟机装了系统。
day 2 计算机硬件组成,操作系统历史发展,选择,vm安装 ,系统安装。
day 3 crt连接,第一关考试题 24个命令,若干特殊字符,快捷键。
day 4 SSH连接,简单优化。
linux 系统中的所有目录内容按照类别组织。例如:Linux下 的应用程序,它的可执行程序可能在/usr/bin,而它的数据文件和帮助在.usr/share下,运行时加载的配置文件和服务启动命令却在/etc下。
如果你理解了上述两点,相信很快就能轻松的理解掌握Linux系统的目录结构了,进而感受Linux系统的独特魅力所在,真的是非常棒。
内容小结:
1)Linux系统所有的目录是一个有层次的倒着的树状目录结构,“/”根是所有目录的起点。
2)不同的目录数据可以跨越不同的磁盘分区或不同的磁盘设备。
3)所有的目录都是按照一定的类别有规律的组织和命名的。
提示:
练习归纳总结的能力,把书由厚变薄。
目录结构:用途说明
存放系统相关的程序,也就是AT&T开发的unix程序
/usr
存放Unix系统商(比如IBM和HP)开发的程序。有关usr的定义,我们根据存放的数据反推,可以理解为user,当然有的文章说是unix
software
resource,但是老师在FHS目录层次标准中未查到以上的两种说法。因此,上述两种说法都是为了记忆而定,纠结到底是哪一个无太大意义。
/usr/local
存放用户自己安装的程序,相当于c:/program files .一般编译软件的时候默认路径,yum或rpm包安装默认路径一般不是这里了。
/opt
在某些系统,用于存放第三方厂商开发的程序,所以取名为option,意为“选装”。
/home
存放用户的数据
Linux 目录结构
目录层次标准FHS
/bin
binaries 常用二进制,命令所在的目录。比如ls.cp.mkdir.rm.cut等命令:/bin目录和/usr/bin类似。
/boot
linux内核及系统引导程序所需的文件目录。安装系统分区的时候一定要分一个boot 分区。常见分区:/boot128M swap内存的1.5倍,/ 全给。
/dev * **
(Device files)设备文件的目录,比如声卡,磁盘,光驱、、
/etc * ****
1)二进制软件安装包(yum,rpm的配置文件默认路径。
2)服务启动命令存放的目录/etc/init.d(yum,rpm). (service sshd start)
/home * *
普通用户的家目录默认数据存放目录。
/lib
库文件存放目录
/lost+found
在ext3文件系统中,当系统意外崩溃或意外关机,会产生一些文件碎片在这里,当系统在开机启动的过程中,fsck工具会检查这里,并修复已经损坏的文件系统,当系统发生问题,可能会有文件被移到这个目录中,可能需要用手工的方式来修复,或移到文件原来的位置上。
/mnt
一般是用于临时挂载存储设备的挂载目录的,比如有cdrom,u盘等目录直接插入光驱无法使用,要先挂载后才能使用。挂载点-->文件系统的(设备)入口。
/opt(option)
表示的是选择的意思,有些软件包也会安装在这里,也就是自定义软件包,我们自己编译的软件包。就可以安装在这个目录中:通过源码包安装的软件,可以通过./confifgure --predfix=/opt/目录,非必需这样,视习惯或规范而定。
/proc * ****
操作系统运行时,进程信息及内核信息(比如cpu,硬盘分区,内存信息等,)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab。
cat /proc/meminfo #<==内存信息
cat /proc/cpuinfo #<==CPU信息
cat /proc/mounts #<==挂载信息
/root
超级权限用户root等家目录
/sbin
大多是涉及系统管理的命令的存放,是超级权限用户root等可执行命令存放地,这个目录和/usr/sbin;/usr/X11R6/sbin或/usr/local/sbin目录是相似的:系统级命令,通过sudo让普通用户执行。
/tmp * **
临时文件目录,有时用户运行程序的时候,会产生临时文件。
/usr
这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。
/var * **
这个目录的内容是经常变动的,看名字就知道了,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录,系统日志路径/var/log/messages。/var/www目录是定义Apache服务器站点存放目录:/var/lib用来存放一些库文件,比如MySQL的,以及MySQL数据库的存放地:
/var/log/messages ---->系统日志文件。
/var/log/secure ---->用户登陆日志(信息)
小结:重要目录回归
/dev/ 设备目录
/etc/ 系统配置及服务配置文件、启动命令的目录
/proc 显示内核及进程信息的虚拟文件系统
/tmp 临时文件目录,公共厕所,客厅
/home 普通用户家目录 大臣的家
/root 超级管理员的家目录 皇宫
/var 变化的目录,一般是日志文件,cache的目录。
/use 用户程序,及数据,帮助文件,二进制命令等目录。
/bin 普通用户命令目录
/sbin和/usr/sbin/ 超级用户命令目录
the root directory
bin: Essential command binaries
boot: Stairc files of the boot loader
dev: Device files
etc: Host-specific system comfiguration
lib: Essential shared libraries and kemel modules
mnt: Mount point for mounting a filesystem temporarily
opt: Add-on application software packages
sbin: Essential system binaries
tmp: Temporary files
usr: Secondary hierarchy
var: Variable data

Linux重要子目录说明:
列举一些常见且很重要的目录。这些是大家必须熟记的。
必须要掌握的Linux目录路径知识。

cat /etc/sysconfig/network-scripts/ifcfg-eth0 *****
查看网卡配置:非常重要用笔默写出来。
DEVICE=eth1 #<==物理设备名,eth1表示第二块网卡
HW ADDR=00:0c:29:ba:8e:8f #<==网卡的MAC地址,48位。
TYPE=Ethernet #<==以太网
UUID=1636dbaa-cc88-418d-820c-a06c956dbf77
([root@oldboy src]# blkid (查询硬盘的UUID) (UUID相当于人的身份证)
/dev/sda1: UUID="2fc59e93-790c-4a16-9f3d-b5da4b5665f6" TYPE="ext4"
/dev/sda2: UUID="0acaf45e-1790-4e5d-a104-28242d34de1e" TYPE="swap"
/dev/sda3: UUID="fae245f2-ec55-4032-b8be-d7ce4352315e" TYPE="ext4")
ONBOOT=yes #<==控制网卡是不是开机启动
MM_CONTROLLED=yes
BOOTPROTO=none #<=其中,proto取下列值之一:none,引导时不使用协议:static静态分配地址:bootp,使用BOOTP(引导)协议,或dhcp,使用DHCP协议。
IP ADDR=10.0.0.7 #<==addr是IP地址。10.0.0.0/24
NETMASK=255.255.255.0 #<=子网掩码,划分网络位和主机位
DNS2=202.106.0.20 #<=DNS把baidu.com变成了baidu服务器IP。DNS就是域名和IP的解析工具。
DNS 域名解析服务
把域名解析成IP。
www.baidu.com ----->1.1.1.1
GATEWAY=10.0.0.254 #<=网关地址,路由器的地址。
DNS1=8.8.8.8 #<==DNS1
USERCTL=no
centos 6.7网卡从DHCP的IP改成静态IP,不重启依然可以连接。重启后连接断开了。
说明:
配置网络地址及GW等* **** 使得网卡生效
1)重启网卡/etc/init.d/network restart (影响所有网卡)
2)ifdwon eth0 &&ifup eth0 (只针对eth0网卡)通过setup->“network configuration”修改网卡配置就是在这个文件。

/etc/resolv.conf *****
设置Linux本地的客户端DNS的配置文件* **** DNS 可以实现域名和IP的互相解析。
setup -->“network comfiguration” -->"DNS configuration"
 
技术分享
 
 
setup -->“network comfiguration” -->"DNS configuration"就是在修改/etc/resolv.conf
技术分享
 
上述设置实际上是修改/etc/resolv.conf这个文件。
负责域名和IP互相解析的服务就是DNS(domain name system)。
www.baidu.com <==> 203.71.88.10
不要在网卡配置文件里配置DNS,而是在/etc/resolv.conf
里配。
小结:
1、Linux客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)
2、Linux客户端DNS也可以在/etc/resolv.conf里设置。
3、网卡里的设置(cat /etc/sysconfig/network-scripts/ifcfg-eth0)DNS优先于/etc/resolv.conf。如果重启网络网卡的DNS会覆盖/etc/resolv.conf的设置。

/etc/hosts ****
设定用户IP与名字(或域名)的对应解析表,相当于本地LAN局域网内的DNS* ****
类似于C:\WINDOWS\system32\drivers\etc\hosts.LAN内IP域名解析文件。开发。测试时做临时的域名解析常用。英文 hosts - The static table lookup for host names.
host 的解析在机房的服务器互相调用中也会常用,如门户网站的解析真实案例:
taobao:
172.38.18.23 realtime-search.config-vip.taobao.com
172.65.54.47 tpbk2configslavel.config-host.taobao.com
alibaba:
172.26.58.40 vafd.china.alibaba.com
172.23.54.47 normy1.vip.xyi.cn.alidc.net
hosts 企业里的作用:
1、开发,产品,测试等人员,用于通过正式的域名测试产品。
2、服务器之间的调用可以用域名(内部的DNS)方便迁移。

/etc/sysconfig/network
可修改机器名及网卡启动,网关等配置。
更改主机名:需要同时修改一下两项:
1、vi /etc/sysconfig/network
2、hostname (后面加主机名即可修改,改完退出就可以了,临时的,永久要改配置文件。) 查看主机名
永久修改(少用vi 不方便)
[root@oldboy ~]# sed "s#HOSTNAME=oldboy#HOSTNAME=chenbaojia#g" /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=chenbaojia
[root@oldboy ~]# sed -i "s#HOSTNAME=oldboy#HOSTNAME=chenbaojia#g" /etc/sysconfig/network
[root@oldboy ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=chenbaojia
同时修改。
主机名也可以在setup 里修改

/etc/fstab *****
实现开机要挂载的文件系统的一个文件* ****
fstab 一旦配置错误,会导致服务器无法启动,如何修复?
[root@oldboy ~]# blkid
/dev/sda1: UUID="2fc59e93-790c-4a16-9f3d-b5da4b5665f6" TYPE="ext4"
/dev/sda2: UUID="0acaf45e-1790-4e5d-a104-28242d34de1e" TYPE="swap"
/dev/sda3: UUID="fae245f2-ec55-4032-b8be-d7ce4352315e" TYPE="ext4"
第一列挂载的设备,可以是设备名或UUID 或磁盘标签。

/etc/rc.local *****
用于存放开机自启动程序命令的文件(chkconfig常用来管理yum/rpm安装的程序的服务的开机自启动)。自己开发的程序,习惯把启动命令放入/etc/rc.local。实现开机启动这些程序。开机时会把/etc/rc.local
里的内容执行一遍。* ****
企业里如何用:chkconfig和/etc/rc.local,可以选择/etc/rc.local,服务器的档案

/etc/inittab ****
设定系统启动时init进程把系统设置成什么样的runleve;运行级别及加载相关的级别对应启动文件设置。
需要了解:Linux开机启动流程。

/etc/exports
设定NFS网络文件系统用的配置文件。

/etc/init.d *****
 
这个目录是用来存放通过yum,或rpm工具安装的软件的默认启动程序的目录。比如Cent OS/RedHat:*****
[root@oldboy ~]# ll /etc/init.d
lrwxrwxrwx. 1 root root 11 11月 5 18:14 /etc/init.d -> rc.d/init.d
/etc/init.d======/etc/rc.d/init.d/
RHEL:service 服务名 start===/etc/init.d/服务名 start

/etc/xinit.d
如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下,有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Rehat/Fedora中比较新的版本中存在。
无人值守安装系统时 pex+kickstart会用到/etc/xinit.d。

/etc/profile *****
系统全局环境变量永久生效的配置文件***** 定义别名以及PATH变量等。
alias rm=‘echo"rm cmd does not to be used."‘
PATH 变量
用户的环境变量:~/bash_profile,~/.bashrc
 

/etc/profile.d
加载系统登陆的一个目录,命令或文件独立存在!以文件的形式存在(*.sh为扩展名),但要可执行。
[root@oldboy ~]# cat /etc/profile.d/oldboy.sh
echo "Welcome to oldboy linux training from/etc/profile.d"
/etc/profile.d 登陆后执行的脚本所在地
/etc/motb 登陆后显示的字符串。
讲跳板机登陆的时候会加载/etc/profile.d的脚本。

/etc/issue
记录用户登录前显示的系统版本等信息。
[root@oldboy ~]# cat -n /etc/issue
系统版本信息
内核版本信息
安全优化>/etc/issue (就是清空这个目录下的信息,版本信息被人知道有危险)
[root@oldboy ~]# ll /etc/issue
-rw-r--r--. 1 root root 0 11月 16 21:29 /etc/issue

/etc/motd
[root@oldboy ~]# echo "Welcome to oldboy training Comput Service\!" >/etc/motd
[root@oldboy ~]# cat /etc/motd
Welcome to oldboy training Comput Service\!
登陆提醒:motd-messsage of the day
The contents of /etc/motd are displayed by login(1) after a suc- cessful login but just before it executes the login the login shell.

/etc/redhat-release
[root@oldboy ~]# cat /etc/redhat-release
CentOS release 6.8 (Final)
系统版本
[root@oldboy ~]# uname -r
2.6.32-642.6.2.el6.x86_64
内核版本
[root@oldboy ~]# uname -m
x86_64
系统版本号

/etc/group ***
设定用户的组名与相关信息。 ***

/etc/passwd *****
账号信息文件 *****

/etc/shadow
密码信息文件

 
/etc/gshadow
组密码文件。

/etc/sudoers * ***
可以执行使用sudo命令的配置文件(权限提升)****
visudo类似vi /etc/sudoers 不建议vi改,因为没有语法检查。
[root@oldboy /]# visudo -c
/etc/sudoers:解析正确

/etc/securetty
设定哪些终端可以让root登陆

/etc/login.defs
所有用户登录时的缺省配置

/etc/modprobe.conf
内核模块额外参数设定

/etc/syslog.conf ***
日志设置文件 *** C5.X

/etc/rsyslog.conf ***
日志设置文件 *** C6.X

其他的目录:
 
 
/lib
系统会使用到的函数库。

/lib/modules
kernel的相关模块

/var/lib/rpm
rpm套件安装处

/usr/bin
这个目录是可执行程序的目录:当我们从系统自带的软件安装包安装一个程序时,他的可执行文件大多会放在这个目录。相似的目录是/usr/local/sbin

/lib64
库文件存放目录

/usr/sbin
这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令:相似目录是/sbin或usr/local/sbin/或/usr/X11R6/sbin等。

/usr/local *****
这个目录一般是用来存放用户自编译安装软件的存放目录:一般是通过源码包安装的软件,如果没有特别指定安装目录的话。一般是安装在这个目录中。相当于:c:\Program files 。

/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-vih 包名.rpm(存在rpm包,又无法使用yum的时候)
2、yum unstall 包名(下载---rpm---解决软件依赖)-简单方便的方法。(习惯:线上对外的服务器很少安装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
系统会用到的函数库

/var 目录下的路径知识
 
/var
日志文件

/var/log
各种系统日志存放地

/var/log/messages *****
系统信息默认日志文件,非常重要,按周自动轮循 *****[root@oldboy /]# ll /var/log/messages*
-rw-------. 1 root root 670260 11月 19 03:45 /var/log/messages
-rw-------. 1 root root 491576 11月 6 09:30 /var/log/messages-20161106
-rw-------. 1 root root 195392 11月 13 12:50 /var/log/messages-20161113
 
dmseg 命令可以看系统的故障信息。
依赖于rsyglog服务开启。
上述轮循日志由/etc/logrotate.conf和/etc/logrotate.d/syslog控制
 
 

/var/log/secure ****
记录登入系统存取信息的文件,按周自动轮循,例如 pop3,ssh.telnet,ftp等都会记录在此。**** 系统安全的日志文件。依赖于rsyglog服务开启。

/var/log/wtmp
记录登陆者的信息的文件。 last. login records lastlog
/etc/logrotate.conf
#no packages own wtmp and btmp -- we‘ll rotate here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
tail -20 /var/log/secure

/var/spool /var/spool/cron/root *****
定时任务crontab默认路径,按用户名命名的文件*****[root@oldboy ~]# crontab -l
[root@oldboy ~]# cat /var/spool/cron/root
[root@oldboy ~]# chkconfig --list crond
crond 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

/var/spool/mail
系统用户邮件存放目录。

/var/spool/clientmqueue ***
sendmail临时邮件文件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等。工作中偶尔会因为该目录文件太多,导致/var所在的分区inode数量被消耗尽,无法写入文件的情况*** C64不会装sendmail,所以不会有这个问题。
企业案例:
/var/spool/clientmqueue文件过多导致inode被消耗尽。no pace left on device.

/proc
虚拟目录,是内存的映射,内核和进程的虚拟文件系统目录

/proc/version
内核版本

/proc/sys/kernel
系统内核功能

/proc/sys/net/ipv4
 
[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_max_tw_buckets
65536
 
[root@oldboy ~]# cat /proc/sys/net/ipv4/tcp_tw_reuse
0
修改proc的配置时临时生效。
/etc/sysctl.conf内核参数里配置才是永久生效。两个路径的修改效果是一样的。net.ipv4.tcp_tw_reuse=1实际上就是修改/proc/sys/net/ipv4/tcp_tw_reuse

/proc/cpuinfo ****
关于处理器的信息,如类型,厂家,型号和性能等。****
top 看 cpu sar.

/proc/meminfo
系统内存信息,free-m

/proc/devices
当前运行内核所配置的所有设备清单

/proc/dma
当前正在使用的DMA通道。

/proc/filesystems
当前运行内核所配置的文件系统。

/peoc/interrupts *****
正在使用的中断,和 曾经有多少个中断 *****

/proc/ioports
当前正在使用的IO端口。

/proc/loadavg *****
系统负载平均值信息(系统的繁忙情况,比较准确,但是不够细致系统性能指标),uptime的结果 ***** 负载值不要超过CPU的核数。看负载top,uptime。

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

其他路径知识(了解)
/etc/DIR_COLORS
设定颜色

/etc/host.conf
文件说明用户的系统如何查询节点名,默认order hosts.bind

/etc/hosts.allow
设置允许使用inetd的机器使用

/etc/hosts.deny
设置不允许使用inetd的机器使用

/etc/protocols
系统支持的协议文件

/etc/X11
X window 的配置文件

/etc/rc.local
存放开机自启动内容的文件(通过源程序编译安装的文件)
chkconfig 一般是用来管理yum/rpm包安装的服务。

必须要掌握的重要目录
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/resolv.conf
/etc/hosts
/etc/sysconfig/network
/etc/fstab
/etc/rc,local
/etc/inittab
/etc/init.d
/etc/profile
/usr/local
/usr/src
/var/log/messages
/var/olg/secure/
/var/spool/cron/root
/proc/cpuimfo
/proc/meminfo
/proc/loadavg
/proc/mounts
 

day 2 Linux目录结构