第三次作业

第三次作业

一、软链接与硬链接的区别   

硬链接就是同一个文件使用了多个别名(他们有共同的 inode)。

硬链接可由命令 link 或 ln 创建,如:

1
2
#link oldfile newfile 
#ln oldfile newfile

  由于硬链接是有着相同 inode 号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有相同 inode 号的文件。有防止误删除的功能

  硬连接大小和源文件一样

  硬链接不能对目录进行创建,只可对文件创建。


  软链接(也叫符号链接)与硬链接不同,文件用户数据块中存放的内容是另一文件的路径名的指向。软链接就是一个普通文件,只是数据块内容有点特殊。不能防止误删除

  软链接大小和源文件不一致

  软链接可对文件或目录创建。

1
2
ln -s old.file soft.link
ln -s old.dir soft.link.dir

加-s选项表示创建的是软链接。

删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接就变成了死链接。


二、inode 工作原理

  1、什么是inode

  首先文件的数据分为两部分:元数据和数据(内容)

  文件存储在硬盘上,而硬盘的最小存储单位叫做“扇区”(Sector)。每个扇区存储512字节(相当于0.5KB)

  而操作系统读取硬盘的时候,不会一个个扇区的读取,而是一次连续读取多个扇区,即一次性读取一个“块”(block)。这种有多个扇区组成的“块”,是文件存取的最小单位,“块”的大小,最常见的是4KB,即连续八个sector组成的一个block

  文件的数据存储在“块”中,那文件的元数据也要存储在一个地方,而这个地方就叫做inode,中文为:“索引节点”。

  也就是说inode=存储文件元数据的区域=索引节点

 2、inode的组成

   inode存储文件元数据的,包括文件的权限、所属主、组、时间戳、大小等;具体情况如下

   文件的读(r)、写(w)、执行(x)权限;例如-rwxrw-rw-

   链接数,既有多少文件名指向这个inode(也就是硬链接数)

   文件数据block的位置

   文件的大小字节数byte

   文件的拥有者属主User ID=UID

   文件的属组Group ID=GID

   文件的时间戳:共有三个,atime=访问时间;mtime=修改(内容)时间;ctime=更改(由元数据)时间(因为inode存储元数据,所以也可以说是修改inode的时间)

wKioL1eelliBLsYdAAEOiVl4l5Y512.jpg

可以用stat命令查看文件的inode信息:

wKiom1eelnOz52kcAACJsVQyNh4780.jpg从上图我们可以看到用stat查看文件的元数据的内容都有哪些(除了文件名),而事实上文件除文件名以外的所有信息都存储在inode中,而文件名另有存储区。

 3、inode的大小

   inode中存储着文件的元数据,所以inode也是要占用存储空间的;所以在硬盘格式化时,操作系统会自动将硬盘分成两个区域。一个是数据去,存放文件数据,一个是inode区,存储文件的元数据。inode节点大小在格式化时,就会设定。一般是128字节或256字节。例如一块1GB硬盘,每个inode节点大小为128字节,每1KB设置一个inode,那么inode table的大小就会达到128MB,占整块硬盘的12.8%


查看每个分区的inode总数和使用率,可以使用df -i命令

wKiom1eemlKzU0qgAAB5jzAq-KY321.jpg

  由于每个文件都要有inode,而每个分区提供的inode也是有限的,所以存在硬盘空间未满,inode已满,而不能够创建新文件的情况

  4、inode号码

    在每个分区中每一个inode都有唯一一个号码,不同分区,inode号码有可能相同,所以每个分区都有自己的inode table,操作系统通过分区内唯一的inode号码来识别查找不同的文件。

    而在linxu系统内部,系统本身是不使用文件名来识别文件的,文件名在系统内只是inode号码便于用户使用的别称。在实际操作过程中,用户像是通过文件名找到并对文件进行操作,但事实上在系统中,系统显示用文件名找到对应的inode号码–>获取inode的信息(元数据和指针)–>找到文件数据所在的数据块block,最后读出数据的。

可是使用ls -i命令查看文件的inode号码

1
ls -i 文件

  5、目录文件

      在linux系统中,目录也是文件;而与inode table对应的这是目录项(dirent)。每个目录项,由两部分组成:包含文件的文件名,以及该文件名对应的inode号码

 可以用ls -i命令查看目录的inode号码

1
ls -i 目录

  6、inode的特殊作用

    1. 有时,文件名包含特殊字符,无法正常删除。这时,直接删除 inode 节点,就能起

到删除文件的作用。

    2. 移动文件或重命名文件,只是改变文件名,不影响 inode 号码。

    3. 打开一个文件以后,系统就以 inode 号码来识别这个文件,不再考虑文件名。因此,

通常来说,系统无法从 inode 号码得知文件名。

    4.删除文件,实质上是删除对应文件的inode,而数据并没有删除,如果恢复数据,则恢复对应的inode号码即可;而如果有新文件占用原inode号码,则数据会被覆盖


三、课前预习

  1 、将/etc/issue 文件中的内容转换为大写后保存至/tmp/issue.out 文件中

1
cat /etc/issue |tr [[:lower:]] [[:upper:]] > /tmp/issue.out

2 、将当前系统登录用户的信息转换为大写后保存至/tmp/who.out 文件中

1
who |tr [[:lower:]] [[:upper:]] > /tmp/who.out

3 、一个linux 用户给root 发邮件,要求邮件标题为”help” ,邮件正文如下:

Hello, I am  用户名,the system version is here,please help me to

check it ,thanks!

操作系统版本信息

1
2
3
4
5
6
7
mail -s Help root <<end
> Hello,I am `whoami`,
> the system version is here,
> please help me to check it,
> thank!
> `lsb_release`
> end

       或者可以将命令 whoami 换成$(echo $USER)也可以

4 、将/root/ 下文件列表,显示成一行,并文件名之间用 空格 隔开

1
ls /root/ |tr "\n" " "

注意:ls输出结果在终端上之间显示是横向排序!但是实际输出结果在重定向到文本文件中时,是以列的形式排序,所以要注意

wKioL1efSbzzu2y7AAB-92jimW4979.jpg

     命令解析:ls /root/产生的文件列表结果通过管道传给tr命令

            tr "\n" " " > Output.txt   是将列表信息中的换行符 \n 替换成空白字符(空格)然后把输出结果重定向到Output.txt文本文件中

5 、file1 文件 的 内容为:”1 2 3 4 5 6 7 8 9 10”  计算出所有数字的总和

1
2
echo "1 2 3 4 5 6 7 8 9 10" > file1
cat file1 |tr " " "+" |bc

6 、删除Windows 文本文件中的'^M' 字符

  现在windows创建文本文件test.txt,输入a、b、c、d每个字母都回车换行

1
2
3
cat -A test.txt        #这一步是查看text.txt文件内的^M符号的,不看也行
cat -A test.txt |tr -d "\r" >Output.txt
cat Output.txt                   #检查结果

命令解析:window中的换行符号是^M,而linux的是\n所以很容易识别

       利用cat -A test.txt将包括^M在内的所有内容通过管道 | 传给tr

       tr -d "^M" >Output.txt  将传过来结果中的"^M"删除,然后输出重定向到Output.txt文本文件中

7 、处理字符串“xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 ”,只保留其中的数字和空格

1
echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 ' |tr -cd [[:digit:]" "]

命令解析:echo 'xt.,l 1 jr#!$mn 2 c*/fe 3 uz 4 '将结果传递给tr

      值得注意的是在此字符串中存在!$,而如果不用''强引用,则会相当于上一命令最后一项

      tr -cd [[:digit:]" "]  中 -c 为补集  -d 是删除  所以意思是将数字和空白字符的补集,即除了数字和空白字符意外的删除

8 、将PATH 变量每个目录显示在独立的一行

1
echo $PATH |tr ":" "\n"

命令解析:echo $PATH 得到的变量结果通过管道 | 传给tr,而$PATH变量中分割符为“:”

      tr ":" "\n"   将分割符“:”替换成“\n”换行符

9 、删除指定文件的空行 

1
cat Output.txt |tr -s "\n"

命令解析:cat Output.txt 将结果传给tr

       tr -s "\n" 将重复的"\n" 换行符删掉压缩

10、将文件中每个单词(字母)显示在独立的一行,并无空行

1
cat Output.txt |tr -cs [:alpha:] "\n"

命令解析:cat Output.txt将结果传递给tr

      tr -cs [:alpha:] "\n"   -c 将大小写字母[:alpha:]的补集,即除字母意外的,全部替换为换行符"\n",然后利用 -s 将除字母意外的重复的空白字符压缩删除;

原创文章,作者:NameLess,如若转载,请注明出处:http://www.178linux.com/28163

(0)
NameLessNameLess
上一篇 2016-08-03
下一篇 2016-08-03

相关推荐

  • htop使用详解

        在管理进程时通常要借助一些工具,比较常用的就是ps和top了;不过CentOS还为我们提供了一个更加强大的工具htop,下面就来了解一下此工具的使用方法。 一、安装htop         htop工具在epel源中提供,请自行配置epel源,也可以直…

    Linux干货 2015-05-18
  • LVM2

    1、逻辑卷     逻辑卷为何物:逻辑,是从人的角度出发的,合乎人类的思维的,所以逻辑卷相对于其它磁盘分区高级一些。主要作用就是可以进行动态扩展缩减,不像其它分区大小固定了要想变动就必须重新格式化。 在实际工作环境中,LVM更适用于现实复杂多变的环境。 现在使用的是LVM2,Logical Volume Manager,Version 2…

    Linux干货 2016-08-30
  • DNS服务器类型及查询过程

    什么是DNS   DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。 DNS域名称   域名系统作为一个层次结构和分布式数据库,包含各种类型的数据,…

    Linux干货 2017-02-08
  • Linux 基础知识(六.二)

    1、复制/etc/rc.d/rc.sysinit至/tmp目录,将/tmp/rc.sysinit文件中的以至少一个空白字符开头的行的行首加# [root@server01 tmp]# cp /etc/rc.d/rc.sysinit /tmp/ [root@server01 tmp]# sed -n "s@^[[:space:]]\+@#&@…

    Linux干货 2016-11-14
  • Linux自动备份脚本

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1541163        今天网上一个朋友问了我一个shell的题目,让我帮他做下。下面是题目以及解题思路。 题目:…

    Linux干货 2016-08-15
  • Linux ansible 服务

                      Linux ansible 服务 Ansible:    运维工具的分类: agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ss…

    系统运维 2016-11-19