zoukankan      html  css  js  c++  java
  • 鸟哥私房菜基础系列第2篇

    私房菜第二篇 linux文件、目录与磁盘格式

    linux系统中比较羽肿不同的是有一个用户群组的概念,不同的这主要是为了给用户权限,实现一套linux平台的文件的安全机制

    文件权限

    列出文件

    ls -al    //将列出包括隐含文件在内的所有文件,并且能够列出文件的类型,权限归属等属性,见下图
    
    

    文件权限示意图

    这一块将的甚是详细,可以认真参阅原书。这里这提示一种需要注意的情况:

    drwx---r-- 2 root root 4096 Oct 19 21:24 tmp/
    该目录是非root账号的其他用户均不可进入
    tmp/目录,因为x与目录的关系相当重要,如果您在该目录下不能执行任何指令,那么自然
    也就无法执行ls,cd等指令,所以,也就无法进入。因此,请特别注意,如果您想开放某个
    目录,请记得将该目录的x属性也开放。

    改变文件或目录所属的用户或者用户组,文件->用户

    改变文件所属群组 change group

    chgrp 群组名称  文件或目录
    chgrp users tmp
    
    

    改变文件的拥有者 change own===>chown

    chown [ -R ] 账号名称文件或目录
    chown [ -R ] 账号名称:群组名称文件或目录
    

    [-R]参数实现递归作用,如果目录县还有目录或者文件,不断的递归改变他们的权限

    改变文件的归属,什么时候用呢最常见的就是复制一个文件给某人的时候,复制文件之后,一定要修改文件的属性,不然别人是没有rwx的权限的

    修改文件的权限 chmod 这是 用户 - > 文件

    数字类型改变文件的权限

    r 4
    w 2
    x 1
    

    [ -rwxrwxrwx ]这9个属性是三三一组,把同一组的数字相加,

    owner = rwx = 4+2+1 = 7
    group = rwx = 4+2+1 = 7
    others = --- = 0+0+0 = 0
    

    所以,三组属性生成的数值就是770
    chmod的语法:

    chmod [-R] xyz 文件或目录        //xyz是421组合相加的某一个结果
    

    最常发生的一个问题是,我们以vi编辑一个shell的文本文件后,
    它的属性通常是-rw-rw-rw-即666的属性,如果要将它变成可执行文件,并且不让他人修改,
    就需要-rwxr-xr-x即755的属性,所以需要输入chmod 755 test.sh。

    符号类型改变文件形态

    ,基本上9个属性分别是user,group和others三组,那么我们可以用u,g和o来代表3个组的属性。此外,a则代表all亦即全部的三个组
    示意图如下:
    符号类型改变文件形态
    假如要把一文件的属性设定为-rwxr-xr-x,如下:

    chmod u=rwx,og=rx .bashrc
    

    请注意,r=rwx,og=rx这一段文字之间并没有用空格符隔开
    给所有人加入写入权限chmod a+w .bashrx, 给所有人取出执行权限chmod a-x .bashrc


    linux文件系统的格式与种类

    ext级别的,现在估计 都ext4了吧,有些distro版本支持ntfs有些不支持。

    文件种类

    • 正规文件(regular file):就是一般类型的文件,即由ls -al显示出的文件中其第一个属性为[ - ]的文件。另外,依照文件的内容,又可以将其细分为下列两种:
      • 纯文本文件(ASCII):这是Unix系统中最多的一种类型,我们可以用来设定的文件几乎都属于这一种;
      • 二进制文件(binary):通常除了脚本(文字型批处理文件)之外,执行文件就是这种文件格式。
    • 目录(directory):就是目录,其第一个属性为[ d ]。
    • 链接文件(link):类似Windows下的快捷方式,其第一个属性为[ l ]。
    • 设备文件(device):与系统外设相关的文件,通常都集中在/dev目录下。通常又分为两种:
      • 块(block)设备文件:就是用于储存数据以提供系统存取的接口设备,简单地说就是硬盘。例如您的主硬盘代码是/dev/hda1。这类文件的第一个属性[ b;
      • 字符(character)设备文件:即一些串行端口的接口设备,例如键盘、鼠标等。这类文件的第一个属性为[ c ]

    文件的后缀名

    原则上来时,从文件的种类就能看出是哪一类文件,所以linux中可以不用后缀名,但是我们往往会加上一些有意义的后缀,当我们看到后缀,就知道这个文件的用途

    • 批处理文档(脚本):通常以*.sh代表(因为批处理文档使用shell写成,所以后缀名为.sh);
    • 打包或压缩文档:通常后缀名为.Z,.tar,.tar.gz,.zip,*.tgz等,这是因为压缩软件分别为gunzip,tar等,其后缀名因不同的压缩软件而不同。
    • 网页文件:通常使用.html与.php等后缀名,

    linux中的目录结构

    linux中的目录结构
    比较重要的目录

    • / 根目录,一切的基础

    • /root 管理员的家目录,很重要

    • /user 相当于windows中的programfile文件,安装的软件的目录,更要命的是,系统也安装在这里

    • /boot 启动系统的一些核心重要文件

    • /etc 整个系统中的重要配置文件所在的位置

    • /var 系统中动态变化的文件再的地方,比如各种重要的log文件

    • /tmp 临时数据存放的地方,有时一些软件默认安装在这里,所以这里注意清理,注意数据的备份

      vbird的提醒

    • /etc:这个目录相当重要,如前所述,启动与系统数据文件均在这个目录下,因此当这个目录被破坏,您的系统也就差不多该死掉了!而在后面,您会发现我们常常使用这个目录下的/etc/rc.d/init.d子目录,因为该目录用于存放启动一些Linux系统服务的脚本(可以认为是批处理文档)。而在/etc/rc.d/rc.local这个文件是启动执行文件,有点类似旧Windows系统下的autoexec.bat及config.sys。所以,如果您有需要在启动时加载的服务或执行文件,可以写在这个文件的最后一行,则启动时就会自动加载执行文件了。
      · /bin,/sbin,/usr/bin,/usr/sbin:这是系统默认的执行文件的放置目录,例如root常用的userconf,netconf,perl,gcc,C++等数据都放在这几个目录中,所以如果您在提示符下找不到某个执行文件,可以在这4个目录中查找。其中,/bin和/usr/bin是系统用户使用的目录,而/sbin和/usr/sbin则是系统管理员使用的目录。
    • /usr/local:这是系统预留的让您安装后来升级的套件的目录。例如,当您发现有更新的Web套件(如Apache),而又不想以RPM的方式升级套件,则可以将apache套件安装在/usr/local下。安装在这里有个好处,因为目前大家的系统都差不多,所以如果您的系统要让别人接管,也较容易上手,比较容易找到数据。因此,如果需要,通常我都会将/usr/local/bin路径加到我的path中。
    • /home:这是系统默认的用于存放用户账号的根目录。
    • /var:这个目录很重要。登入、各类服务发生问题时的记录,以及常规性的服务记录等都记在这个目录下,所以当您的系统出现问题,就需要在这个目录记录的文件数据中查看问题所在。另外,mail的默认位置也在这里,所以这个目录非常重要。
    • /usr/share/man,/usr/local/man:这两个目录为放置各类套件说明文档的地方,例如,您执行man man,则系统自动查找这两个目录下的所有说明文件,如果有相同的数据就会显示出来。

    一般比较常见的分区安排是:
    /
    /boot
    /usr
    /home
    /var



    文件与目录管理

    明白绝对路径相对路径的使用

    常用目录的符号意义

    .     代表当前层目录
    ..     代表上层目录
    ~     代表自己的根目录
    ~user 代表到user这个人的根目录
    
    

    目录与路径中常用的几个命令:

    cd 变换目录
    pwd 显示当前目录
    mkdir 建立一个新目录
    rmdir 删除一个内容为空的空目录
    

    cd 是changge directory的缩写

    [root @test /root]# cd .. <==回到上一层目录
    [root @test /root]# cd ../home <==相对路径的写法
    [root @test /root]# cd /var/www/html <==绝对路径的写法
    [root @test /etc]# cd <==回到用户的根目录
    [root @test /etc]# cd ~ <==回到用户的根目录
    [root @test /etc]# cd ~test <==回到test用户的根目录
    

    pwd 是print work directory的缩写

    建立 和 删除目录 mrdie rmdir


    环境变脸PATH

    这个概念,在windows中也有,只要某个程序的据对路径加入到了Path中,那么在任何目录下,输入程序名称就可以执行这个程序,明白一下三个问题

    • 查看PATH值 echo $PATH
    • 添加一个路径到PATH PATH="$PATH":/root
    • 两个文件重名,当时在不同的目录中,看谁的路径写在PATH中比较靠前的位置,先查到的,先执行
    • 既然如此问什么不把,当前路径"." 加入到path的最前面,因为这样不够安全,可能会造成安全性的问题,如果别人在/tmp目录随便写了一个恶意程序,都能执行。

    文件与目录的管理

    几个重要常用的指令

    ls 显示文件名称、属等
    cp 复制文件或目录
    rm 删除文件或目录
    mv 移动文件或目录

    ls

    语法:
    [root @test /root ]# ls [-ailS]

    参数说明:

    -a :列出所有文件(连同隐藏文档)

    -i :打印inode的值

    -l :详细列出,连同文件大小、属性数据等

    -S :以文件大小排序

    --color=never :不显示颜色

    --color=always :均显示颜色

    --color=auto :由系统自行判断

    cp

    语法:
    [root @test /root ]# cp [-drsu] [源文件] [目标文件]
    参数说明:
    -d :进行复制时,如果是复制到链接文件,若不加任何参数,则默认情况下会将链接到的源文件复制到目的地,若加-d,则链接文件可原封不动地将链接这个快捷方式复制到目的地。

    -r :可以进行目录的复制,实现了递归

    -s :做成链接文件,与ln指令功能相同。

    -u, --update:如果源文件较新,或者没有目标文件,才会进行复制动作。可用于备份操作

    rm

    语法:
    [root @test /root ]# rm [-fir] [文件名]
    参数说明:
    -i :提供用户确认(这是默认值)。

    -r :循环删除,直到没有东西为止。

    -f :force,就是强制删除。
    经常 rm -rf filename组合比较多,这种情况是确认我不要这个文件了
    不过在Linux系统下,为了避免误删文件,都带有-i参数,-i参数用于在每个文件被删除之前让用户确认,以防误删文件。

    mv 移动文件,文件重命名

    [root @test /root ]# mv [-u] [源文件] [目标文件]
    参数说明:
    -u :同样,为update的简写,当源文件比目标文件还新时才会动作!mv -u 比较的是时间节点的心就,cp -u则是比较文件的内容是不是有变动



    查看文件的内容

    cat 由第一行开始显示文件内容
    tac 从最后一行开始显示,可以看出,tac是cat的倒写
    more 一页一页地显示文件内容
    less 与more类似,但其优点是,可以往前翻页
    head 只看头几行
    tail 只看末尾几行
    nl 显示时同时输出行号
    od 以二进制方式读取文件内容
    

    cat与tac,从名字都能看出,一个是正看一个是到看,一次性显示所有内容,管你能看多少

    cat [-n] filename    // -n显示行号
    

    more和less
    more比cat人性一点,可以分屏显示,
    less比more更任性,可以一行行的向下现实,也可以一屏一屏的前后滚动,也可向前后搜索关键词

    head与tail
    head [-n x] filename -n属性表示x行,现实前面x行。默认情况下现实前面10行
    tail表示现实后面的若干行。

    nl

    语法:
    [root @test /root ]# nl [文件名]
    参数说明:
    范例:
    [root @test /root]# nl ~/.bashrc
    nl指令的用法和cat -n用法相似,即查看文件的同时可以显示行号

    od
    当文件是二进制的时候,使用more less vi都读不出来内容,这个时候可以使用od读取,可以以2进制,十进制,十六机制输出,对工程师比较有用

    连接文件的介绍

    inode
    这个要先来看一下 ls -i,属性可以产看到文件的inode节点的属性,inode节点到底什么。是这样的,文件的最小存储单位是block一般是n*512bytes,例如是4K。一个文件会被存储到若干个block中,inode则描述了这个文件到底是在那几个block块中。一般inode在一开始是设定好的,inode的个数“硬盘纵容来那个 / 一个容量”,这个容量会比block稍微大一点,比如block=4K,这个容量就是8K,那么1G的空间就对应有13107个inode。一个inode的大小是128bytes。所以一个硬盘分好区以后,数据区域就被分成了两部分一部分是inode table,一部分是真正存储数据的地方
    连接相当于是指针,连接又分为两种硬链接hard,符号链接ssymbolic link,二者是有区别的。

    ln [-s] source destination    // 默认情况就是硬链接,-s属性就是符号链接
    

    文件的索引就是依靠inode,当我们在硬盘上存储一个文件的时候,在inode table中生成了一个inode,如果没有粉盒的inode指向这个文件的block块这个文件就相当于是被删除了。

    ln source des-ln
    

    硬链接
    干的事情就是,借助原来的inode也就是原来的source,有创建了一个和原来的inode指向同一个文件的inode,我们把这个新的inode叫做硬链接,很明显这消耗了inode table中的一天记录。硬链接相当于java中的引用的概念,两个引用同时指向数据区的一块空间,其中一个引用null后,我们可以用另一个应用来索引这块空间。硬链接存在以下连个问题:

    • 不能跨文件系统,因为不同的文件系统都有自己的inode table,
    • 不能链想inode,因为 inode table中的记录会不断的消耗掉。

    符号链接,容易让大家教程软连接
    符号链接干了一件什么事:穿件了一个新的独立文件,这个文件里面记录了目标文件的inode的值。如果说,硬链接是床架了两个指向同一个文件的指针p,q;那么符号谅解则只是创建了一个指向指针的指针,也就是说他不想是硬链接也代表原来的文件,他只是一个符号,罢了。用伪码描述如下:
    硬链接是指向同一个文件的两个指针

    int a;
    int* p = &a;
    int* hard = &a;  // 这就是穿件连接的操作
    (p == hard) = true;
    

    符号链接就是一个二级指针

    int a= 1;
    int *p = &a;
    int* soft = &p;
    

    很明显一旦p删除之后,soft就再也再也找不到a了,windows中的快捷方式更像是软连接。

    注意,linux中的连接无论软硬,只要是对连接的作用,最终都会影响到连接指定的block块中的文件。


    文件(目录)的权限,属性

    chown,chhgrp改变所有者和所有的群组,前面已经介绍过了,这里略

    设置文件或者目录的初始默认属性umask

    umask

    umask    //查看默认值,root登录时,返回的是0022,有效的也就后面三位022
    umask 002    //设定这个值为022
    

    默认情况下,新建文件的默认最多是666,没有可执行属性;新建目录的默认属性最高是777,umask的意思就是在新建文件目录的时候,减去这几个属性。

    比如:

    umask 002    // 设置umask的值为002
    touch test1   //新建一个文件,那么这个文件的属性就是 666-002 = 664,文件的属性就是 -rw-rw-r--
    medir dirtest    //目录的属性就是 777-002=775    即-rwxrwxr-x
    

    设计的妙处一般设写权限都是很重要的,把新建的用户的写权限向别的用户关闭,在root目录下的文件很重要,一般新建的文件的写权限也会关闭,这样加强安全性。

    chattr 和 lsattr

    chattr

    语法:
    [root @test /root ]# chattr [+-=][ASacdistu] [文件或目录名称]
    参数说明:
    +-= :分别为“+”(增加)、“-”(减少)、“=”(设定)属性
    A :当设定了属性A,这个文件(或目录)的存取时间atime (access)将不可被修改,可避免
    诸如手提电脑容易产生磁盘I/O错误的情况
    S :这个功能有点类似sync,是将数据同步写入磁盘中,可以有效避免数据流失
    a :设定a后,这个文件将只能增加数据而不能删除,只有root才能设定这个属性。
    c :设定这个属性之后,将会自动将此文件压缩,在读取时自动解压缩。但是在存储的时候,会
    先进行压缩再存储(对于大文件很有用)
    d :当dump(备份)程序被执行,设定d属性将可使该文件(或目录)具有dump功效
    i :这个参数可以让一个文件“不能被删除、更名、设定链接也无法写入或新增数据”,对于系
    统安全性有相当大的助益
    j :当使用ext3文件系统格式时,设定j属性将使文件在写入时先记录在日志中,但是当
    filesystem设定参数为data=journalled时,由于已经设定了日志,所以这个属性无效
    s :当文件设定了s参数时,它会被完全移出这个硬盘空间
    u :与s相反,当使用u配置文件时,数据内容其实还存在于磁盘中,可以用来取消删除

    chattr设置的上面的这些属性都是隐藏的,一般的ll指令是看不到的,要看到上面属性额值,就必须使用专用的指令,lsattr

    这两个指令可以高度的保证安全。使用的会后要注意,比如你把 chattr +i 、etc/shadow这个属性添加账户和密码的,一旦这样泥猴,你会发现没有办法添加账户了,这个时候使用 lsattr /etc/shadow查看一下是不是 加了锁定,可以使用charttr -i /etc/shadow解锁

    搜寻(查找)文件或者目录

    which 查看可执行文件的位置
    whereis 查看文件的位置
    locate 配合数据库查看文件位置
    find 实际搜寻硬盘查询文件名称
    

    通常我们都是先使用whereis或locate来查找,如果真的找不到,才使用find,因为whereis与locate是利用数据库来搜寻数据,所以相当快,而且没有实际搜寻硬盘,比较省时间。

    which,通过PATH进行虚招所以基本的功能在与寻找bin指令的位置

    which passwd
    

    whereis

    语法:
    [root @test /root ]# whereis [-bmsu] [目录名称]
    参数说明:
    -b :只找二进制文件
    -m :只找在说明文件manual路径下的文件
    -s :只找source源文件
    -u :没有说明文档的文件!

    whereis -b passwd
    

    locate

    [root @test /root ]# locate [目录名称]

    locate passwd
    

    为什么whereis和locate回避find的搜索速度快,而且有时会把一些已经删除的文件再次找出来,这是因为这两个文件查找的时候,会到系统各种的一个数据苦衷去查找,系统会默认一段时间updatedb一次,所以有些文件杀出了但是可能还在数据库中,而且有时新的一个文件时候locate查不到这是因为还没根新数据库所以查不到。这个数据库的危害默认在 /var/lib/slocate并不是所有的数据都需要建立数据库,我们可以设置,配置文件是/etc/updatedb.config
    刚刚实验了一下才发现cenos7中没有暗转locate命令,需要自己安装

    find

    语法:
    [root @test /root ]# find [路径] [选项] 参数
    参数说明:

    1. 时间:
      -atime n :将n24小时内被存取过的文件列出来
      -ctime n :将n
      24小时内被改变、新增的文件或目录列出来
      -mtime n :将n*24小时内被修改过的文件列出来
      -newer file :把比file还要新的文件列出来
    2. 使用名称:
      -gid n :寻找群组ID为n的文件
      -group name :寻找群组名称为name的文件
      -uid n :寻找拥有者ID为n的文件
      -user name :寻找用户名称为name的文件
      -name file :寻找文件名为file的文件名称(可以使用通配符)
      -type type :寻找文件属性为type的文件,type包含了b, c, d, p, l, s,
      这些与前一章的属性相同。例如l为Link而d为目录
    [root@iZ0zpl7q0nklmuZ ~]# find /home -user test
    [root@iZ0zpl7q0nklmuZ ~]# find /home -user test
    [root@iZ0zpl7q0nklmuZ ~]# find / -name testing
    [root@iZ0zpl7q0nklmuZ ~]# find . -ctime 1
    [root@iZ0zpl7q0nklmuZ ~]# find /home -mtime 1
    [root@iZ0zpl7q0nklmuZ ~]# find /home -atime 1
    

    文件的几个特殊属性UID,GID 和 SUID, SGID, 以及sticky bit
    UID和GID
    uid就是user id的缩写,gid就是grup id的缩写,前面有讲到过,linux中的用户身份都是用一个id标志的。并不是说把一账户名叫做root那么这个账户就拥有了root权限,只要一个杭虎的UID,和GID都是0的话,那么这个账户就变成了root的身份自然也就有了root权限

    SUID 和 SGID
    这两个标志就不是简单的id号的问题。这里的s有super的意思。先来看这么一个情景;当一个账户修改密码是使用的/usr/bin/passwd指令,会默认的修改 /etc/shadow这个文件

    ll /user/bin/passwd   
    -rwsr-xr-x. 1 root root 27832 Jun 10  2014 /usr/bin/passwd
    
    ll /etc/shadow
    -rw------- 1 root root 819 Aug  1 08:46 /etc/shadow
    
    

    查看这个文件发现这个文件只有root有rw的权限,那么一般的用户执行passwd指令是怎么修改shadow这个文件的呢,注意观察passwd的属性是-rwsr-xr-x,user的属性中的x被s替换了,这个意思就是表明SUID的,一旦任何用户执行passwd这个文件,就将拥有该文件拥有者(root)的权限,passwd这个文件是属于root的,s替代了root在passwd上user属性中的x,那么当test用户执行passwd的时候就将又有root属性的权利,root可以rw、etc/shadow文件,那么test用户执行passwd指令的时候也就拥有了修改shadow文件的能力,这就实现了密码的修改。SGID的意义就可以类推了。
    不得不佩服设计的巧妙。

    sticky bit

    一次类推s如果取代了other属性中的x呢?这样做事没有意义的,既然other具有s,和把这个文件的x属性开放给别的用户是没有区别的。这个时候会出现一个sticky bit(t)标志位。 /tmp 目录有这个标志位,我自己把这个标志位,翻译成一种黏连:在/tmp目录下常见的目录有个特点:一个用户创建的文件只能由这个用户和root两个人能够删除,别人都无法删除,因为/tmp有t标志,那么这个目录下的文件就有这种特性,别人不能删除这个文件,只能由创建者和root来删除。

    file [文件名]

    可以查看一个文件的属性。

    硬盘和硬件管理 chapter7

    硬盘的物理结构

    硬盘由多个硬盘盘片组成,每个硬盘盘片上都有一个磁头(Head)进行该硬盘盘片的读写工作,当磁头固定不动,硬盘盘片旋转一周所走轨迹就是磁(Track)。所有硬盘盘片上同一段磁道组成了磁柱(Cylinder)。一段磁道就是硬盘分区时的最小单位,即扇区(Sector),是最小的硬盘储存物理量,通常为512 bytes。这就是整个硬盘的结构。
    一般一块磁盘最小的存储单位扇区(sector)的大小设计成512Bytes(也就是0.5K),然后一个磁盘又会划分成若干个存储文件的block块,一个block的大小一般设计成n*sector,比如,n=16,blck = 8K.一个block最多可以存放一个文件,如果一个文件的额大小小于block,那么block的限制的内容只能浪费掉了。所以block的大小不能太大也不能太小太小的话,inode太多,查找文件时特别的费时间;block太大,磁盘的利用率比较低。

    每个硬盘的起始部分有一块固定的分区叫做MBR里面存储两部分内容:开机启动程序和partition table,partition table最多只能存4个p和e。如果一个愉快硬盘的mbr坏掉了,这块硬盘也就报废了。

    每个分区的就是一个文件系统,每个分区的其实的几个block叫做super block,这个区块里面记载了本分区内的block使用情况,和开机启动程序,可以配合mbr中的开机启动会层序完成多重启动。

    记住一个非常重要的概念每个文件系统就是一个磁盘分区,每个文件系统就是一个磁盘分区,每个文件系统就是一个磁盘分区

    常用的指令:

    df 查看硬盘的总容量、已用容量与inode,分区情况等
    du 查看文件已用容量

    df

    语法:
    [root @tsai /root ]# df -[ikm]
    参数说明:

    -i: 使用 i-nodes 显示结果
    -k: 使用 KBytes 显示结果
    -m: 使用 MBytes 显示结果

    du

    语法:
    [root @test /root ]# du [-abckms] [目录名称]
    参数说明:
    [目录名称] 可以省略,如果省略,表示要统计当前所在目录的文件容量
    -a :列出所有的文件与目录,默认值是列出目录的值
    -b :列出的值以bytes输出
    -c :最后求总total
    -k :列出的值以KB输出
    -m :列出的值以MB输出
    -s :只列出最后求总的值

    磁盘分割与格式化

    fdisk 硬盘分区工具
    e2label 修改硬盘的label(表头名称)的工具
    mke2fs Linux下重要的格式化工具

    fdisk
    [root @test /root ]# fdisk [-l] [设备名称]
    参数说明:
    -l :直接列出该硬盘设备的分区表

    fdisk 设备名称

    fdisk /dev/vda
    m        //查看帮助信息
    p        //打印当前的分区状态,相当于fdisk -l 设备名
    

    然后跟着指令的提示可以完成相应的删除,添加分区等操作。
    使用fdisk分区之后,就要对分区进行格式化,使用命令make2file,意思就是说生成文件系统(file system )

    make2fs

    语法:
    [root @test /root ]# mke2fs [-b block-size] [-i inode-size]
    [root @test /root ]# mke2fs [-c]
    [root @test /root ]# mke2fs [-L]
    [root @test /root ]# mke2fs [-j]
    参数说明:
    -b :设定每个数据块占用的大小,目前支持的大小有
    1024, 2048和4096 三种
    -i :设定 inode 值
    -c :检查磁盘错误,会比较慢
    -L :设定这个扇区的label(表头名称)
    -j :建立ext3这个具有日志管理功能的文件格式

    [root @test /root]# mke2fs /dev/hda5
    用mke2fs默认的条件(ext2)格式化/dev/hda5
    
    [root @test /root]# mke2fs -c /dev/hda5
    在格式化过程中同时检查硬盘
    
    [root @test /root]# mke2fs –j -b 8192 -i 8192 /dev/hda5
    改变block,由4096默认值改为8192
    

    e2label

    语法:
    [root @test /root ]# e2label [/dev/hd...] [label_name]
    参数说明:
    范例:
    [root @test /root]# e2label /dev/hda1 /
    将/dev/hda1设备名设为“/”
    这个就相当于windows中,修改磁盘驱动器的名字一样。

    mknod

    语法:
    [root @test root]# mknod [device] [bcp] [Major] [ Minor]
    参数说明:
    b :设定节点为外部设备文档
    c :设定节点为接口设备,如鼠标等
    p :建立FIFO

    很少能用的指令,说实话,也没法实战。

    减产硬盘坏轨与数据同步写入

    建立新的分区并格式化之后,我们还可以检测分区(硬盘得)坏道情况,有专用的执行即是fsck,如果有损毁的话,会把相应的文件放到lost+found目录下面,这个目录平时是没有的。操作系统都有缓存的概念,用来提高读写速度,但是遇到突发情况,缓存中的数据没有协会内存的话就会导致数据的不同步,于是有一个专用的指令 sync

    fsck 检查硬盘有没有坏轨
    sync 将内存中的数据同步写入硬盘

    fsck

    语法:
    [root @test /root ]# fsck [-Aar] [设备名称]
    参数说明:

    -A :依据/etc/fstab的内容,将所有的设备都扫描一次
    (通常启动过程中就会执行此指令)
    -a :自动修复检查到的问题扇区,所以您不用一直按y
    -r :一定要让用户决定是否需要修复,这与上一个-a参数刚好相反

    注意这个指令也是在硬盘有问题的时候才是用,一般情况下不要使用,可能会对文件造成伤害。

    sync

    语法:
    [root @test /root ]# sync
    参数说明:
    例:
    [root @test /root]# sync; sync

    这几节书,现实中真正比较有用的指令,应当也就df, du, fdisk, sync.一般在这边记录的都是比较有用,或者能够实践的。

    硬盘的装载

    自己新安装了一块硬盘使用上面的方法,分区格式化之后,要想能够ranglinux真正的使用治这块硬盘,就需要把硬盘挂载到文件系统,这一块就会讲到挂在的问题都是很实用,甚至可以在双系统的时候,挂碍winddows的分区。

    假设我们的 / 为/dev/hda1而/home为/dev/hda2,那么/home/test下的内容也就都归/dev/hda2所有。需要特别留意的是,装载硬盘的时候得先建立装载目录(即装载点)。除此之外,如果装载目录中不为空,那么装载之后,原目录下的东西就会暂时消失。

    mount

    语法:
    [root @test /root ]# mount [-ahlV]
    [root @test /root ]# mount -t type /dev/hdxx /mountpoint
    [root @test /root ]# mount -o [options]
    [root @test /root ]# umount /mountpoint
    参数说明:
    -a :依照/etc/fstab的内容装载所有相关的硬盘
    -h :只列出mount相关的参数,并不装载任何设备
    -l :列出当前已经装载的设备、文件系统名称与装载点
    -V :列出mount的版本信息
    type :将后面/dev/hdxx设备以type的文件格式装载到
    /mountpoint这个点。常见的type有下面几个:
    vfat, msdos :是支持Windows系统的文件格式,其中vfat较常用
    ext, ext2 :是Linux的主要文件格式
    iso9660 :光驱的文件格式
    nfs, ntfs, ufs :Windows 2000使用的NTFS格式
    -o :这个参数后面接的项很多,如下:
    rw :让装载的硬盘为可擦写
    suid :允许该硬盘配置文件为SUID状态
    exec :允许该硬盘执行二进制文件
    auto :允许该硬盘使用mount -a参数设定
    nouser :禁止他人(非root用户)使用装载功能,这是默认值。
    async :允许硬盘进行异步记录(内存与硬盘不同步,最常用)
    defaults:同时具有rw, suid, dev, exec, auto, nouser, async这些功能
    nosuid :不许该硬盘具有SUID文件属性
    ro :设定为只读属性
    remount :让系统已经装载的硬盘重新被装载

    当然这一块内容可能有点老,但是他山之石,可以攻玉,看看作为参考还是可以的

    装载光驱
    [root @test /root]# mount -a
    [root @test /root]# mount -t iso9660 /dev/cdrom /mnt/cdrom
    
    装载Windows文件系统的软驱,这个好像只支持fat32的文件系统
    [root @test /root]# mount -t vfat /dev/fd0 /mnt/floppy
    
    装载Linux文件系统的软驱
    [root @test /root]# mount -t ext2 /dev/fd0 /mnt/floppy
    
    装载Linux文件格式的硬盘
    [root @test /root]# mount -t ext2 /dev/hdc6 /home
    
    让根目录重新装载为可读。这在单人维护模式下很好用这个指令只有root才能执行
    [root @test /root]# mount -o remount,rw /
    
    依照/etc/fstab的参数内容将所有的磁盘重新装载上
    mount -a
    
    

    如何卸载外部的存储装置
    umount

    语法:
    [root @test root]# umount [-f] [device|mount_point]
    参数说明:
    -f :强制将该文件系统退出,最常使用在无法退出的NTFS文件系统中

    [root @test root]# umount /home
    [root @test root]# umount /mnt/cdrom
    
    

    注意 卸载某一个外部设备的时候,一定不能在这个设备的内部

    文件系统的装载

    原来现在所用的这个md的编辑器的原发嵌套要用空格分割。

    以前是装载软盘,现在就是装载u盘了,软盘是fdnumber命名的

    [root @test /] # mount -t ext2 /dev/fd0 /mnt/floppy <==Linux格式
    [root @test /] # mount -t vfat /dev/fd0 /mnt/floppy <==Windows格式
    [root @test /] # umount /mnt/floppy <==将软驱卸载
    
    

    挂在光盘这

    [root @test / ]# modprobe cdrom
    [root @test / ]# modprobe ide-cd
    [root @test / ]# mount -t iso9660 /dev/cdrom /mnt/cdrom
    [root @test / ]# umount /mnt/cdrom
    
    

    我用的是阿里云的虚拟主机,第二条指令发生错误。
    作者介绍了 modprobe cdrom指令加载光驱模块,可以man 一下这个指令。

    第三条指令等价于mount /dev/cdrom /mnt/cdrom默认带有-t iso9660的属性。

    挂在windows分区

    感觉这一块还是很实用的,尤其是在双系统中。一种方法是在装linux系统的时候(当然默认是现状了windows系统),建一个目录,然后把相应的windows的分分区挂在上去,这样以后每次启动linux系统的时候,就会自动挂在windows的分区了。下面介绍的就是装linux的时候没有挂在windows分区的情况。
    首先使用fdisk 查看windows分区的 hdx 代号
    下面是只有一块硬盘的时候

    fdisk -l /dev/hda1
    ...
    [root @tsai / ]# mkdir /mnt/win98
    [root @tsai / ]# mount -t vfat /dev/hda1 /mnt/win98
    [root @tsai / ]# mount -t vfat -o iocharset=cp950 /dev/hda5 /mnt/win98    //iocharset字符编码的选项
    

    设置启动时挂在

    每次都这样手动挂在绝对很麻烦于是可以通过文/etc/fstab件的配置,在启动时就挂在windows分区。
    不过要注意一下问题

    • 根目录/必须装载,而且一定先于其他装载点。
    • 其他装载点必须为已建立的目录,可以任意指定,但一定要遵守必要的系统目录架构原则。
    • 所有装载点在同一时间内只能装载一次。
    • 所有分区在同一时间内只能装载一次。
    • 若进行卸载,必须先将工作目录移到装载点(及其子目录)之外。

    打开/etc/fstab文件,在问价的最后加内容

    /dev/hdb1 /disk2 ext2 defaults 1 1
    ```~~~~
    添加的这一行对应6colomn,分别是:
    **device MountPoint filesystem parameters dump fsck**
    
    原书对各字段介绍的很详细,可以参看原书。
    
    ## 自己建立一个swap分区,现在的机器硬盘都够用,这一块地略过。
  • 相关阅读:
    vue样式的动态绑定
    vue表单选项框
    vue简单逻辑判断
    vue的选项卡功能
    简单vue的监听属性(单位换算)
    简单的Vue计算属性
    vue.js 入门
    head元素的内容
    HTML实体
    CSS元素的盒类型
  • 原文地址:https://www.cnblogs.com/OliverZhang/p/7653063.html
Copyright © 2011-2022 走看看