当前位置: 必赢官网 > 操作系统 > 正文

Linux编程 1 (文件系统路径说明, 目录结构说明

时间:2019-12-26 00:52来源:操作系统
一. Linux文件系统路径说明 熟悉windows系统的,都知道文件路径表示,如C:UserrichDocumnetstest.doc。 在linux中目录称为虚拟目录(virtual directory)根目录是root,根目录下的目录和文件会按照访问它

一. Linux文件系统路径说明

   熟悉windows系统的,都知道文件路径表示,如C:UserrichDocumnetstest.doc。

  在linux中目录称为虚拟目录(virtual directory) 根目录是root,根目录下的目录和文件会按照访问它们的目录路径一一列出。如:/home/rich/Documnets/test.doc(斜杠与windows系统相反)。  路径本身并没有提供任何有关文件究竟存放在哪个物理磁盘上的信息。 在linux pc上安装的第一块硬盘称为根驱动器。 根驱动器包含了虚拟目录的核心,其它目录都是从那里开始构建的。

  在根驱动器上创建一些特别的目录称为挂载点(mount point). 挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上它们却存储在另外一个驱动器中。

  通常系统文件会存储在根驱动器中,而用户文件则存储在另一驱动器中,如下图:
     图片 1

  上面展示了计算机中的两块硬盘。一块硬盘和虚拟目录的根目录关联起来。剩下的硬盘就可以挂载到虚拟目录结构中的任何地方。在上面的例子中,第二块硬盘被挂载到/home位置。

/dev/sda3     /data      ext3    defaults 1    2

4.2 监测磁盘空间

定义:Linux文件系统将所有的磁盘都并入一个虚拟目录下,再使用新的存储媒体之前,需要把它放到虚拟目录下,这个工作叫做挂载(mounting)。

1.mount:默认情况下输出当前系统上挂载的设备列表

可以看到四部分信息:媒体的设备文件名,媒体挂载到虚拟目录的挂载点,文件系统类型,已挂载媒体的访问状态

 

2. 媒体设备挂载到了虚拟目录以后,root用户就有了该设备的所有访问权利,而其他用户则会被限制。

3. umount。从Linux上移除一个可移动设备时,不能从系统上移除,而应该先卸载。哎,还是不太明白。

 图片 2

 

4.df:查看所有已挂载磁盘的使用情况, 也可以df -h。比较容易看懂

5.du:快速查看目录中的磁盘使用情况(默认是当前目录)。也可以加 -h 参数。

-c 显示所有已列出文件总的大小

-s 显示每个输出参数的总计

二.系统文件目录结构说明

  图片 3

目录

说明

/

虚拟目录的根目录,通常不会在这里存储文件

/bin

二进制目录,存放用户级的GNU工具

/boot

启动目录,存放启动文件

/dev

设备目录,系统在这里创建设备节点

/etc

系统配置文件目录

/home

主目录,系统在这里创建用户目录

/lib

库目录,存放系统和应用程序的库文件

/media

媒体目录,可移动媒体设备的常用挂载点

/mnt

挂载目录,另一个可移动媒体设备的常用挂载点

/opt

可选目录,常用于存放第三方软件包和数据文件

/proc

进程目录,存放现有硬件及当前进程的相关信息

/root

Root用户的主目录

/sbin

系统二进制目录,存放许多gnu管理员级工具

/run

运行目录,存放系统运作时的运行时数据

/srv

服务目录,存放本地服务的相关文件

/sys

系统目录,存放系统硬件信息的相关文件

/tmp

临时目录,可以在该目录中创建删除临时工作文件

/usr

用户二进制目录,大量用户级的gnu工具和数据文件存储

/var

可变目录,用以存放经常变化的文件,比如日志文件

4.1 监测程序

  1. ps  默认只显示运行在当前控制台下的属于当前用户的进程。  可以接很多选项,比如 -A表示所有进程  -e等。

  2. ps -l  查看进程更多信息

 

UID:启动这些进程的用户

PID:进程的进程ID

PPID:父进程的进程ID

C:进程生命周期中的CPU利用率

TTY:进程启动时的终端设备

TIME:运行进程需要的累计CPU时间

CMD:启动的程序名称

PRI:进程的优先级(数字越大代表越低的优先级)

ADDR:进程的内存地址

F:内核分配给进程的系统标记

S:进程的状态(O正在运行,S代表正在休眠,R代表可运行,T代表停止,Z代表僵尸进程,进程已结束资源还没有回收,但是父进程也不在了,没人给他们收尸)

SZ:假如进程被换出,所需交换空间的大致大小

 

还有一种这样的

 图片 4

 

4.1.2 实时监测进程

top:这个是实时显示的

 

4.1.3 结束进程

kill 4223   直接输入进程ID号结束

killall http*  通过进程名来结束进程,杀掉所有以http开头的进程

 

 

补充:关于目录的知识:

  1. linux将文件存储在单个目录结构中,这个目录被称为虚拟目录(virtual directory)

虚拟目录将安装在PC上的所有存储设备的文件路径纳入单个目录结构中。

2./home/xcy/test/1.c  路径本身没有提供任何有关文件究竟存放在哪个物理磁盘上的信息

3.linux pc机上安装的第一块硬盘称为根驱动器。根驱动器包含了虚拟目录的核心,其他目录都是那里开始构建的。

4. Linux会在根驱动器上创建一些特别的目录,我们称之为挂载点。挂载点是虚拟目录中用于分配额外存储设备的目录。虚拟目录会让文件和目录出现在这些挂载点目录中,然而实际上他们却存储在另外一个驱动器中。

0x05 FAQ

4.3 处理数据文件

排序: sort  file

还可以接很多参数。

比如 sort -t ':' -k 3 test

可以看成里面的内容是这样  xxx1:xxx2:xxx3:xxx4:xxx5

表示对xxx3进行排序

-t: 指定一个用来区分键位置的字符

-k: --key=pos1[pos1]。排序从pos1开始,如果指定了pos2的话到pos2结束。

 图片 5

| 将du命令的输出重定向到sort命令。

-r:表示降序排列。

下面是一个例子:

 图片 6

 4.3.2

  1. grep [options] pattern [file]

例如:

grep t test // 在test中搜索能匹配模式t的文本

grep -v t test // 匹配没有t的

-n 可以加上行号

-e 匹配多个模式, grep -e t -e f test // 找有t或f的所有行

 

4.3.3 压缩数据

4.3.4 归档数据 tar

 

  1. 临时挂载

a. 挂载点必须是一个目录
b. 一个分区挂载在一个已存在的目录上,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用。对于其他操作系统建立的文件系统的挂载也是这样,卸载后,目录以前的文件都还在,不会有任何丢失
c. 目录只占磁盘里的一个inode,存放文件属性等信息
d. 任何一个分区都必须挂载到某个目录上
e. 目录是逻辑上的区分。分区是物理上的区分
f. 磁盘Linux分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作
g. 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区
h. 一个分区可以挂在多个目录,但反过来一个目录只能是一个分区的挂载点

UUID=7cc82613-5be2-4e58-b359-0920613f9509     /data        ext3    defaults   1    2
  1. 主分区 vs 扩展分区
    硬盘分区表中最多能存储四个分区,但我们实际使用时一般只分为两个分区,一个是主分区(Primary Partion)一个是扩展分区(extended partition),主分区可以马上被使用但不能再分区,扩展分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩展分区再分下去的是什么呢?它就是逻辑分区(Logical Partion),逻辑分区没有数量上限制。
  2. 驱动器标示的含义
    对Linux用户来说无论有几个分区,都得分给目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分,因为它采用了一种叫“挂载点”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区就在linux的存储空间的某个目录下获得。
    对于IDE硬盘,驱动器标识符为“hdx1”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“1”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标识为“sdx1”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
    上面可以看到,Linux的分区是不同于其它操作系统分区的,它的分区格式常用的有Ext3和Swap两种,Ext3用于存放系统文件,Swap则作为Linux的交换分区(相当于windows中的虚拟内存文件)。那么现在我们就可以知道Linux至少需要两个专门的分区(Linux Native(本地)和Linux Swap(交换))。由于不能将Linux安装在Dos/Windows分区。一般来说我们将Linux安装一个或多个类型为“Linux Native”的硬盘分区,但是在Linux的每一个分区都必须要指定一个“Mount Point”(挂载点),告诉Linux在启动时,这个目录要给哪个分区使用。对“Swap”分区来说, 一般也定义一个,且它不必要定义载入点。
    下面我们先对“Linux Native”和“Linux Swap”有个初步的了解。
    SWAP分区是LINUX暂时存储数据的交换分区,它主要是把主内存上暂时不用得数据存起来,在需要的时候再调进内存内,且作为SWAP使用的分区不用指定“Mout Point”(载入点),既然它作为交换分区,我们理所当然应给它指定大小,它至少要等于系统上实际内存的量,一般来说它的大小是内存的一至两倍。另外你也可以创建和使用一个以上的交换分区,最多16个。
    Linux Native是存放系统文件的地方,一般用EXT4的分区类型,对Linux来说,有了较大的选择余地,可以把系统文件分几个区来装(必须要说明挂载点),也可以就装在同一个分区中(挂载点是“/”)。
  3. 为什么要自定义多个分区
    a. 在不损失数据的情况下重装系统,比如独立设置/home挂载点,重装系统的时候直接标记回/home,数据不会有任何损失。
    b. 针对不同挂载点的特性分配合适的文件系统以合理发挥性能,比如对/var使用reiserfs,对/home使用xfs,对/使用ext4。
    c. 针对不同的挂载点开启不同的挂载选项,如是否需要即时同步,是否开启日志,是否启用压缩。
    d. 大硬盘搜索范围大,效率低
    e. 磁盘配额只能对分区做设定
    f. /home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片

/dev/sda3 为需要挂载的分区,sda3是 Linux 检测硬盘时按顺序给分区的命名,一般来讲,这个名称并不会变化,但是如果你有多块硬盘,硬盘在电脑中的顺序变化的时候,相同的名称可能代表着不同的硬盘分区。这样的话上面设置的开机自动挂载就会出现找不到分区上面的文件情况
这个时候 UUID 就派上用场了,UUID 全称是 Universally Unique Identifier,也就是说,每个分区有一个唯一的 UUID 值,这样就不会发生分区识别混乱的问题了。
在 fstab 中用 UUID 挂载分区格式如下:

可以通过下面命令得到分区的UUID

0x04 通过 fstab 设置开机挂载的问题

$ mount /dev/sda3 /data   ##sda3分区挂载在data目录下
$ umount /data   ##卸载data目录下分区
![](https://upload-images.jianshu.io/upload_images/4241038-2339e498c92de522.jpg)

目录结构
  1. 添加硬盘&分区&挂载
    参考之前写的文摘《Centos下磁盘分区及挂载》
$ ls -l  /dev/disk/by-uuid/

0x03 实战分区挂载

Linux 在启动的时候通过 fstab 中的信息挂载各个分区,一个典型的分区条目就像这样:

  1. 永久挂载:开机自动挂载
    需要修改/etc/fstab

0x01 Linux 分区简介

博客地址:http://yangfannie.com

LABEL=/data   /data   ext3   defaults   1   2
修改为:
/dev/sda3     /data      ext3    defaults 1    2

PS:fstab 是文件系统分配表的配置文件,该文件有着严格的语法格式限制,类似 crontab 一样,保存时也会对你的输入格式进行校验,请慎重使用,否则会有意想不到的问题发生。其一共有 6 个字段,空格分隔。

  1. 常见的挂载目录说明
    / 根目录,存放系统命令和用户数据等(如果下面挂载点没有单独的分区,它们都将在根目录的分区中)
    /boot boot loader 的静态链接文件,存放与Linux启动相关的程序
    /home 用户目录,存放普通用户的数据
    /tmp 临时文件
    /usr 是Linux系统存放软件的地方,如有可能应将最大空间分给它
    /usr/local 自已安装程序安装在此
    /var 不断变化的数据,服务器的一些服务、日志放在下面
    /opt (Option可选的)附加的应用程序软件包
    /bin 基本命令执行文
    /dev 设备文件
    /etc 主机特定的系统配置
    /lib 基本共享库以及内核模块
    /media 用于移动介质的挂载点
    /mnt 用于临时挂载文件系统或者别的硬件设备(如光驱、软驱)
    /proc 系统信息的虚拟目录(2.4 和 2.6 内核),这些信息是在内存中,由系统自己产生的
    /root root 用户的目录
    /sbin 基本系统命令执行文件
    /sys 系统信息的虚拟目录(2.6 内核)
    /srv 系统提供的用于 service 的数据
    /usr/X1186 X-Windows目录,存放一些X-Windows的配置文件
    /usr/include 系统头文件,存储一些C语言的头文件
    /usr/src Linux内核源代码,Linux系统所安装的内核源代码都保存在此
    /usr/bin 对/bin目录的一些补充
    /usr/sbin 对/sbin目录的一些补充
    /lost found 这个目录在大多数情况下都是空的。但是如果你正在工作突然停电,或是没有用正常方式关机,在你重新启动机器的时候,有些文件就会找不到应该存放的地方,对于这些文件,系统将他们放在这个目录下
  2. 为什么 linux 的分区需要有挂载这个动作呢
    因为linux 下一切皆文件!换句说法就是linux操作系统将系统中的一切都作为文件来管理。在windows中我们常见的硬件设备(打印机、网卡、声卡...)、磁盘分区等,在linux中统统都被视作文件,对设备、分区的访问就是读写对应的文件。

  1. 常见的挂载目录结构

0x02 挂载点目录简介

编辑:操作系统 本文来源:Linux编程 1 (文件系统路径说明, 目录结构说明

关键词: 必赢官网