首页 > 代码库 > Linux课程笔记 Day03 课后作业精选
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
[root@test2 ~]# echo $(date +%y-%m-%d) 13-05-24 [root@test2 ~]# echo `date +%y-%m-%d` 13-05-24 #------------à以上两个命令的用法是不同的,都可以用于脚本 请问下老师,这里用法有什么区别呢? [root@test2 ~]# date +%y-%m-%d 13-05-24 |
拓展全格式日期:
[root@test2 ~]# echo `date +%Y-%m-%d` 2013-05-24 [root@test2 ~]# echo `date +%F` 2013-05-24 [root@test2 ~]# echo `date +%D` 05/24/13 [root@test2 ~]# echo `date +%Y-%m-%d-%H-%M-%S` 2013-05-24-20-36-15 |
生产环境举例:
[root@test2 ~]# tar zcvf services_$(date +%F).tar.gz /etc/services tar: 从成员名中删除开头的“/” /etc/services [root@test2 ~]# tar ztvf services_2013-05-24.tar.gz -rw-r--r-- root/root 362031 2006-02-23 21:09:23 etc/services |
在生产环境中,备份、记录日志、同步等大量场合一般都会用时间作为处理的文件名,可以在配合定时任务生成不同的文件名称
实现按周输出 比如:周六 输出为6
[root@test2 ~]# echo `date +%w` 5 [root@test2 test]# tar zcvf services_$(date +%w).tar.gz /etc/services tar: 从成员名中删除开头的“/” /etc/services [root@test2 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 课后作业精选