Linux课程笔记 Day03 课后作业精选

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux课程笔记 Day03 课后作业精选相关的知识,希望对你有一定的参考价值。

1. 描述 linux 系统从开机到登陆界面的启动过程。

解答:

(1) 电源开机,Bios自检

(2)MBR引导

(3)grub引导菜单

(4)加载内核

(5)启动init进程

(6)读取inittab文件,执行rc.sysinit,rc等脚本

(7)启动mingetty,进入登录系统界面

 

2. 描述 linux 下软链接和硬链接的区别。

解答:

(1)默认不带参数,ln命令创建的是硬链接

(2)硬链接与源文件的inode节点号相同,而软链接文件的inode节点号与源文件不同

(3)ln命令不能对目录创建硬链接,但可以创建软链接

(4)软链接可以跨文件系统,硬链接不可以跨越文件系统

(5)删除软链接文件,对源文件和硬链接文件无任何影响

(6)删除硬链接文件,对源文件及软链接无任何影响

(7)删除源文件,对硬链接文件无影响,会导致其软链接失效

(8)同时删除源文件及其硬链接文件,整个文件才会被真正的删除

(9)很多硬件设备中的快照功能,使用的就是类似硬链接的原理

 

3. 描述 linux 运行级别 0-6 的各自含义 

解答:

(1)0:关机

(2)1:单用户模式

(3)2:无网络支持的多用户文本界面模式

(4)3:有网络支持的多用户文本界面模式

(5)4:系统保留,未使用

(6)5:有网络支持、X-Window支持的多用户模式

(7)6:重启

 

4. 描述 linux 下文件删除的原理。

解答:

     Linux是通过link的数量来控制文件删除的,只有一个文件不存在任何link的时候,这个文件才会被删除。一般来说,每个文件只有2个link计数器:i_count和i_link。

     i_count的意义是当前文件使用着(或被调用)的数量,i_link的意义是介质链接的数量(硬链接的数量):可以理解为i_count是内存引用计数器,i_link磁盘的引用计数器。

 

     当一个文件被某一个进程引用时,对应的i_count数会增加;当创建文件的硬链接的时候,对应的i_link数就会增加。

     对于删除命令rm而言,实际是减少磁盘引用计数器i_link。当一个文件正在被某个进程调用,而用户却执行rm操作把文件删除了,那么执行ls或者其他管理命令,无法再找到这个文件,但是调用这个文件的进程却在继续正常执行,依然能够从文件中正确的读取及写入内容。

     这是因为rm操作只是将文件的i_link减为0了,但由于该文件依然被进程引用,此时文件的i_count并不为0.所以即使执行rm操作,系统并没有真正删除这个文件,当只有i_count和i_link都为0的时候,这个文件才会被真正的删除。也就是说,还需要解除该进程的对该文件的调用才行。

 

     当文件没有被调用时,执行了rm操作删除文件后是否还可以找回被删的文件呢?

     rm操作只是将文件的i_link置为0了,实际是将文件名到inode的链接删除了,此时,并没有删除文件的实体即block数据块,如果及时停止及其工作,数据是可以找回的,如果此时继续写入数据,那么当数据就可能被分配到被删除的数据的block数据块,此时文件就会真正的回收了,到时就没办法找回了。

 

      总结:上述描述了linux系统删除文件条件:i_count和i_link均为0;删除的原理:删除文件名到inode的链接,即将link置为0,而数据依然在block中。

 

5. 问题:请给出如下格式的date 命令 例:11-02-26。再给出实现按周输出 比如:周六输出为 6,请分别给出命令。

解答: date  +%y-%m-%d;date +%w

 

[[email protected] ~]# echo $(date +%y-%m-%d)

13-05-24

[[email protected] ~]# echo `date +%y-%m-%d`

13-05-24

#------------à以上两个命令的用法是不同的,都可以用于脚本

请问下老师,这里用法有什么区别呢?

[[email protected] ~]# date +%y-%m-%d

13-05-24

 

拓展全格式日期:

[[email protected] ~]# echo `date +%Y-%m-%d`

2013-05-24

[[email protected] ~]# echo `date +%F`

2013-05-24

[[email protected] ~]# echo `date +%D`

05/24/13

[[email protected] ~]# echo `date +%Y-%m-%d-%H-%M-%S`

2013-05-24-20-36-15

 

生产环境举例:

 [[email protected] ~]# tar zcvf services_$(date +%F).tar.gz /etc/services

tar: 从成员名中删除开头的“/”

/etc/services

[[email protected] ~]# tar ztvf services_2013-05-24.tar.gz

-rw-r--r-- root/root    362031 2006-02-23 21:09:23 etc/services

在生产环境中,备份、记录日志、同步等大量场合一般都会用时间作为处理的文件名,可以在配合定时任务生成不同的文件名称

 

实现按周输出 比如:周六 输出为6

[[email protected] ~]# echo `date +%w`

5

[[email protected] test]# tar zcvf services_$(date +%w).tar.gz /etc/services

tar: 从成员名中删除开头的“/”

/etc/services

[[email protected] test]# ls

services_5.tar.gz  test1.txt  test2.txt  test3.txt

使用周轮询的好处就是最多7分日志,不需要删除,系统会自动覆盖之前的一个文件

 

6. 问题:扩展问题:打印三天前的日期格式如:2011-02-26

解答:

方法一:date  +%F  ---date ‘3 day ago‘

方法二:date  +%Y-%m-%d –-date  ‘3 day ago’

方法三:date  +%F  -d ‘3 day ago ’

方法四:date  +%F  -d  ‘-3 day’ (推荐使用,输入最少)

 

7. 已知/oldboy/test.txt 文件内容为:

oldboy

 

xizi

 

xiaochao

请问如何把文件中的空格过滤掉(要求命令行实现)。

解答一: grep  –v  “^$”  /oldboy/test.txt

解答二:sed法,sed  -i  “/^$/”

 

8. 请给出正确的关机和重起服务器的命令。

解答:

关机:shutdown  -h  now; halt ;poweroff ;init 0

重启:shutdown –r now;reboot;init 6

以上是关于Linux课程笔记 Day03 课后作业精选的主要内容,如果未能解决你的问题,请参考以下文章

Linux课程笔记 Day01 课后作业总结

Linux课程笔记 Day03 课程内容总结

Linux课程笔记 Day03 命令总结

Linux课程笔记 Day01 课程内容总结

课程引言课后作业1

Linux课程笔记 Day02 课程内容总结