一、系统目录结构
几乎所有的计算机操作系统都是使用目录结构组织文件。具体来说就是在一个目录中存放子目录和文件,而在子目录中又会进一步存放子目录和文件,以此类推形成一个树状的文件结构,由于其结构很像一棵树的分支,所以该结构又被称为目录树。
windows:以多根的方式组织文件,系统目录与磁盘是强对应的。C盘下目录文件不可能与D盘下目录有关联或交集。
Linux:以单根的方式组织文件。Linux系统目录与磁盘等设备是不直接关联的,每个目录都可以挂载在不同的设备上。访问/、/etc、/boot时可能是在访问完全不同的分区和磁盘。
PS:关于挂载Linux下的设备(如磁盘)如果不挂载,则看不到入口,无法使用。如要访问则需开个口,即挂载点(实质是一个目录)。开口的过程即挂载。开机会加载/etc/fstab文件,实现对系统分区的自动挂载。
历史简单了解:最早/挂载在第一块硬盘上(井盖那么大,容量才1.5M),很快满了,后来就搞第二块,而且规定系统放1,用户放2,即/usr挂载在第二块上….如此延续
诞生后做了个标准:目录层次标准FHS 网站可查www.pathname.com/fhs/做了两层规定:/下放啥 ;/usr和/var这俩下放啥
用tree命令查看根目录下的内容
[root@localhost ~]# tree -L 1 /
/
├── bin -> usr/bin 英文二进制binaries的缩写,存储二进制文件命令(普通用户和超级用户可以执行) 比如ls cp等
├── boot 存放Linux的内核及系统引导程序 开机加载文件
├── dev Device 设备文件
├── etc 存放系统所有的配置文件;Cent6服务启动命令存放目录
├── home 普通用户的家目录
├── lib -> usr/lib libraries 库 启动系统和运行命令所需的共享库文件和内核模块
├── lib64 -> usr/lib64 64位的
├── media 多媒体文件存放目录
├── mnt 临时挂载点。比如U盘往里一插
├── opt 存放应用程序
├── proc 进程
├── root root用户的家目录
├── run 正在进行进程相关信息的文件
├── sbin -> usr/sbin system binaries 存储二进制文件命令(只有超级管理员才能使用)
├── srv
├── sys
├── tmp 临时文件
├── usr 系统软件和用户相关程序
└── var 存放系统可变文件(系统日志等)
19 directories, 0 files
//注意:在Linux7系统中, /bin, /sbin, /lib, /lib64都以软链接的形式链接到/usr/目录下,例如:
/bin --> /usr/bin
/sbin --> /usr/sbin
lib -> usr/lib
lib64 -> usr/lib64
二、重点掌握以下目录
/etc 系统重要配置文件, 以及常用服务配置文件
/var 存放系统引导启动时产生的可变文件,文件通常动态更改的,例如: 缓存目录,日志文件
/run 系统启动后, 运行的程序产生的运行时数据, 包括进程的pid文件,锁文件等
/home 普通用户的主目录, 普通用户的家目录默认为/HOME/USERNAME
/root 超级管理员的主目录, 普通用户无权操作
/tmp 存放临时文件, 一般存放超过10天以上都会自动删除,可以更改删除临时文件的期限
/boot 存放系统引导时候需要的文件
/dev 存放设备文件
/usr 安装的软件, 共享库, 重要的子目录有
/usr/bin 用户命令目录
/usr/sbin 管理员命令目录
/usr/local 本地自定义安装的软件
/etc目录
/etc/sysconfig/network-scripts/ifcfg-ens33
# 配置网卡信息 Cent7 我们执行的nmtui图形化配置上网 本质就是修改上述文件里的东西 以后就可以用vim直接改这个文件
/etc/hosts #本地域名解析文件
比如系统输入网址www.baidu.com后 优先找hosts,hosts文件里没有再找公网DNS
“自己打井吃水”
DNS Domain Name System域名系统
作用:把浏览器里输入的域名解析为服务器的IP地址,然后才能找到服务器
/etc/resolv.conf ***** #DNS服务器配置
/etc/hostname 主机名配置文件
/etc/sysconfig/network ***** #IP、掩码、网关、主机名配置
/etc/fstab ***** #开机自动挂载。所有分区开机都会自动挂载
设备要挂载才能用。系统开机时运行此文件,自动挂载了安装时的分区。
比如插个u盘 希望下次开机能直接访问 就需要在此配置
/etc/rc /etc/rc.d ***** #/etc/rc*.d 启动、或改变运行级时运行的scripts或scripts的目录.
/etc/inittab ***** # Cent6 修改runlevel
[root@web01 ~]#cat /etc/inittab
# inittab is no longer used when using systemd.(Cent 7不再使用了)
/etc/exports ***** #设置NFS系统用的配置文件路径
/etc/init.d/ ***** #这个目录来存放系统启动脚本
/etc/profile ***** #全局系统环境配置变量
/etc/csh.login, /etc/csh.cshrc
/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/printca #类似/etc/termcap ,但针对打印机.语法不同.
/etc/shells #列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.
提供一台机器FTP服务的服务进程ftpd 检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许
该用户登录.
/etc/xinetd.d #如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录下。有些系统没有这个目录,比如Slackware,有些老的版本也没有。在Redhat Fedora中比较新的版本中存在。
/etc/opt/ #/opt/的配置文件
/etc/X11/ #X_Window系统(版本11)的配置文件
/etc/sgml/ #SGML的配置文件
/etc/xml/ #XML的配置文件
/etc/skel/ ***** #默认创建用户时,把该目录拷贝到家目录下
/usr目录
默认软件都会存于该目录下。用于存储只读用户数据的第二层次;包含绝大多数的用户工具和应用程序。
/usr 目录 相当于windows下的 C:\Windows目录
/usr/local 软件安装目录 相当于C:\Program
/usr/bin 普通用户使用的应用程序(重要)
/usr/sbin 管理员用户使用的应用程序(重要)
/usr/lib 库文件Glibc 32bit
/usr/lib64 库文件Glibc 64bit
/usr/X11R6 #存放X-Windows的目录;
/usr/games #存放着XteamLinux自带的小游戏;
/usr/doc #Linux技术文档;
/usr/include #用来存放Linux下开发和编译应用程序所需要的头文件;
/usr/lib #存放一些常用的动态链接共享库和静态档案库;
/usr/man #帮助文档所在的目录;
/usr/src #Linux开放的源代码,就存在这个目录,爱好者们别放过哦;
/usr/bin/ #非必要可执行文件 (在单用户模式中不需要);面向所有用户。
/usr/lib/ #/usr/bin/和/usr/sbin/中二进制文件的库。
/usr/sbin/ #非必要的系统二进制文件,例如:大量网络服务的守护进程。
/usr/share/ #体系结构无关(共享)数据。
/usr/src/ #源代码,例如:内核源代码及其头文件。
/usr/X11R6/ #X Window系统版本 11, Release 6.
/usr/local/ #本地数据的第三层次,具体到本台主机。通常而言有进一步的子目录,例如:bin/、lib/、share/.这是提供给一般用户的/usr目录,在这里安装一般的应用软件;
/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/wtmplog所有到系统的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息.
/var/log 里的文件经常不确定地增长,应该定期清除.
/var/run #保存到下次引导前有效的关于系统的信息文件.例如,
/var/run/utmp 包含当前登录的用户的信息.
/var/cache/ #应用程序缓存数据。这些数据是在本地生成的一个耗时的I/O或计算结果。应用程序必须能够再生或恢复数据。缓存的文件可以被删除而不导致数据丢失。
/dev目录
/dev这个目录对所有的用户都十分重要。因为在这个目录中包含了所有Linux系统中使用的外部设备。但是这里并不是放的外部设备的驱动程序,这一点和windows,dos操作系统不一样。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,和访问一个文件,一个目录没有任何区别。
设备文件分为两种:块设备文件(b)和字符设备文件(c)
设备文件一般存放在/dev目录下,
sda 系统的第一块磁盘
sda1 系统第一块磁盘的第一个分区
sda2 系统第一块次磁盘的第二个分区
sda3 系统第三块磁盘的第三块分区
sdc 系统的第三块磁盘
sdc3 系统第三快磁盘的第三个分区
sde2 系统第五块磁盘的第二个分区
dev/cdrom 光驱
dev/random 随机数
/dev/sdb1 系统第二块磁盘的第一个分区
特殊设备
/dev/null 它是空设备,也称为位桶(bit bucket)或者黑洞(black hole)。你可以向它输入任何数据,但任何写入它的数据都会被抛弃。通常用于处理不需要的输出流。(当然,它也可以作为空的输入流)
/dev/zero 该设备无穷尽地提供空字符(ASCII NUL, 0x00),可以使用任何你需要的数目。它通常用于向设备或文件写入字符串0,用于初始化数据存储。(当然,也可作为输出流的接受容器)
/ proc 目录
虚拟文件系统,将内核与进程状态归档为文本文件(系统信息都存放这目录下)。
例如:uptime、 network。在Linux中,对应Procfs格式挂载。该目录下文件只能看不能改(包括root)
/proc/meminfo ***** #查看内存信息
/proc/loadavg ***** #查看负载(系统繁忙程度指标)对应命令uptime
当负载的数字和cpu核数相当的时候就是负载的一个临界点 如一颗2核cpu 到2 的时候就是临界点
三个数字分别对应是 1分钟 5 15分钟 的负载
/proc/uptime ***** #就是用 uptime 的时候,会出现的资讯啦!
/proc/cpuinfo ***** #关于CPU的信息,如类型、厂家、型号和性能等。
特殊目录“.”和“..”
在每个目录下, 都会固定存在两个特殊目录, 分别是.和..的目录。
一个点代表当的是当前目录, 两个点代表的是当前目录的上层目录。
注意: 在Linux下所有以点开始的文件都是"隐藏文件", 对于这类文件, 只使用命令ls -l是看不到的, 必须要使用ls -la才可以看到,如下所示:
[root@localhost ~]# ll -la
total 72
dr-xr-x---. 3 root root 4096 Aug 27 13:56 .
dr-xr-xr-x. 17 root root 224 Aug 17 15:27 ..
-rw-r--r--. 1 root root 23 Aug 25 09:24 001
-rw-r--r--. 1 root root 0 Aug 27 13:56 1
。。。。。。
三、文件路径定位
在我们开始操作文件前,首先需要对文件进行定位,比如:你要在哪,创建什么文件?你要将文件复制到什么地方?你要删除什么地方的文件?
绝对路径和相对路径
Linux系统采用了目录树的文件组织结构, 在Linux下每个目录或文件都可以从根目录处开始寻找, 比如: /usr/bin目录。这种从根目录开始的全路径被称为”绝对路径”, 绝对路径一定是以 “/” 开头的。
就好比,咱们在中国写快递地址的时候 ,如果你往外省邮寄,北京-上海
绝对路径 得写具体地址:上海市/浦东新区/创智XX/3207
相对路径 你在叫外卖的时候呢:浦东新区/创智XX/3207
例
进入/opt目录
[root@db04 ~]# cd /opt/
[root@db04 opt]# ls -la
总用量 1048592
drwxr-xr-x. 3 root root 4096 5月 31 06:05 . //当前目录
dr-xr-xr-x. 23 root root 4096 5月 21 11:11 .. //上层目录
drwxr-xr-x. 2 root root 4096 11月 22 2013 rh
-rw-r--r-- 1 root root 1073741824 5月 31 06:05 test.txt
进入当前目录
[root@db04 opt]# cd .
[root@db04 opt]# pwd
/opt
进入当前目录的上层目录
[root@db04 opt]# cd ..
[root@db04 /]# pwd
/