2018-2019-1 20189204《Linux内核原理与分析》第一周作业

20189204《Linux内核原理与分析》第一次作业

虽然之前在本科上过Linux课程,但是在本周的Linux初级学习阶段,依然遇到了很多问题

一.学习环境的搭建中的问题

1.VMware workstation 和Ubuntu版本不匹配

由于之前电脑上存在VMware,所以这次就没有用老师推荐的基于VirtualBox安装Ubuntu,不过问题也来了
在我下载最新版Ubuntu即Ubuntu-18.04.1-desktop-amd64并安装到虚拟机上的时候,发现报错 Kernal panic-corrupted stack end detected inside scheduler,大意是在调度器内部检测到了损坏的栈,我以为是        虚 拟机内存分配的不够,于是调整内存为2G,4G,6G,但结果还是这样。于是百度了一下,发现报此类错误原因是低版本的VMware兼容不了高版本的Ubuntu!

如果是18.04版本的Ubuntu则要用14.1.2版本的VMware

如果是16.04版本的Ubuntu就可以用其他版本的VMware

而内存不够报错的提示应该是这样的Kernal panic-Out of memory and no killable processes

2.VMware 中安装VM Tools一直是灰色的问题
这个解决方案没有成功 [这个解决方案成功了](https://blog.csdn.net/qq_20307987/article/details/51302005)

二.Linux学习问题

1.关于文件权限的表示问题

简单概括就是文件有三组权限:属主,属组,其他用户,不同权限可以用加和形式统一表示

2.实验三作业

添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。截图并把操作过程写入实验报告。

提示: 如何创建一个文件呢?可以考虑 touch 命令,这个命令可以创建一个空文件。如果不知道 touch 是什么,我们上一课讲到了哦。

3.实验三目录的表示

  • 表示上一次所在目录,~ 通常表示当前用户的 home 目录。使用 pwd 命令可以获取当前所在路径(绝对路径)。
    这里特别注意~表示当前用户的home目录,其实是home下的子目录(当前用户)

    此处cd ~之后的目录是/home/shiyanlou

4.实验四关于文件复制

实验楼中降到了学习递归复制文件目录,但是没有告诉我们命令的格式或者说表示的含义,那么我们可以从命令结果倒退出复制文件目录的语法格式 即 cp 被复制文件目录名  新文件目录名,结果如图所示

需要注意的是我在执行cp -r father family 之前是没有mkdir family的  最后的结果是./family/son/grandson   这是与实验楼中的不同的实验,所以结果也不一样。

5.实验四作业

1. 创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。
2. Linux 的日志文件在哪个目录?

Linux 的日志文件存放在/var/log目录中

6.实验五--变量与环境变量

按变量的生存周期来划分,Linux 变量可分为两类:

永久的:需要修改配置文件,变量永久生效;

临时的:使用 export 命令行声明即可,变量在关闭 shell 时失效。

这里介绍两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。还有要注意区别的是每个用户目录下的一个隐藏文件:

.profile 可以用 ls -a 查看
cd /home/shiyanlou
ls -a 
这个 .profile 只对当前用户永久生效。而写在 /etc/profile 里面的是对所有用户永久生效,所以如果想要添加一个永久生效的环境变量,只需要打开 /etc/profile,在最后加上你想添加的环境变量就好啦。

7.实验五作业

利用之前学的正则表达式的知识,批量创建了.list文件然后再查找,一定记得locate前先要sudo updatedb

8.实验六之tar打包压缩

tar 原本只是一个打包工具,只是同时还是实现了对 7z、gzip、xz、bzip2 等工具的支持,这些压缩工具本身只能实现对文件或目录(单独压缩目录中的文件)的压缩,没有实现对文件的打包压缩,而tar实现了对文件的打包压缩,且tar的压缩和解压命令相同只是参数不同

-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后,比如不能写成 tar -fc shiyanlou.tar,可以写成 tar -f shiyanlou.tar -c ~。你还可以加上 -v 参数以可视的的方式输出打包的文件。上面会自动去掉表示绝对路径的 /,你也可以使用 -P 保留绝对路径符。

zip:
打包 :zip something.zip something (目录请加 -r 参数)
解包:unzip something.zip
指定路径:-d 参数
tar:
打包:tar -cf something.tar something
解包:tar -xf something.tar
指定路径:-C 参数

9.实验六作业



10.实验七

dd默认从标准输入中读取,并写入到标准输出中,但可以用选项if(input file,输入文件)和of(output file,输出文件)改变。

bs(block size)用于指定块大小(缺省单位为 Byte,也可为其指定如'K','M','G'等单位),count用于指定块数量。如上图所示,我指定只读取总共 10 个字节的数据,当我输入了“hello shiyanlou”之后加上空格回车总共 16 个字节(一个英文字符占一个字节)内容,显然超过了设定大小。使用du和cat命令看到的写入完成文件实际内容确实只有 10 个字节(那个黑底百分号表示这里没有换行符),而其他的多余输入将被截取并保留在标准输入。

11.实验七作业

找出当前目录下面占用最大的前十个文件,这里要用到多个命令,有du -a 显示大小  sort排序 以及head 显示前十,那么这就需要用管道工具来连接这三个命令,逐步收敛查询数据,结果如下

12.管道工具

管道是什么?管道是一种通信机制,通常用于进程间的通信(也可通过socket进行网络通信),它表现出来的形式就是将前面每一个进程的输出(stdout)直接作为下一个进程的输入(stdin)。
我个人的理解就是,通过不同命令的组合,将查询结果逐渐收敛,而管道就是连接前一个命令的输出与后一个命令的输入的工具

总结

之前在大学的时候学习过linux,对于linux一些常用的基本操作有一些基础。在这次的学习过程中,我丰富了原来的知识,例如:查看用户组不但可用group命令还可以用cat /etc/group来做,这样就既学到了新命令,又了解了linux的常用目录结构,增强了linux相关知识的联系。磁盘的操作、Linux简单文本处理、Linux日志系统等对我来说都是比较陌生的知识,特别是正则表达式基础,学起来比较吃力,以后要多看多用,尝试在熟悉的命令中加入正则表达式,例如使用touch bowen{1..10}.txt这样的命令,这样才能尽快掌握这些知识并学以致用。

原文地址:https://www.cnblogs.com/bowendky/p/9781824.html