实验楼 linux内核原理与分析,《Linux内核原理与分析》第一周作业 20189210

实验一 Linux系统简介

这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别。其中学到了LInux中的应用程序大都为开源自由的软件,用户可以修改定制再发布;内核是实现多任务运行和硬件管理的基础;在我们使用应用程序时,在背后支持软件服务的是成千上万个Linux服务器主机。

实验二 Linux基础概念及操作

这一节首先学习了实验楼环境、终端的概念、和shell命令以及相关小技巧和快捷键。其中Shell是一种中间程序,即是用户交互的界面,也是控制系统的脚本语言。

其次在实践中又学习了shell通配符以及批量创建文件。

829242

829242

实验三 用户文件管理

1. Linux用户管理

首先学习了 who命令, su命令 , sudo命令。了解了user、用户组等相关概念。

并且除了root自己外,其他sudo里的用户要使用root权限必须在命令前加上sudo,而且只有将用户添加到sudo组里才能使用root权限。

829242

这里 cat 命令用于读取指定文件的内容并打印到终端输出,后面会详细讲它的使用。 | sort 表示将读取的文本进行一个字典排序再输出

829242

2. 文件权限

Unix/Linux系统除了对用户权限作了严格的界定外,还在用户身份认证、访问控制、传输安全、文件读写权限等方面作了周密的控制

829242

一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。

ls 加上 -lh 参数来更直观的查看文件的大小。

829242

g、o 还有 u 分别表示 group、others 和 user,+ 和 - 分别表示增加和去掉相应的权限。

3. 创建新用户和新文件,并使新用户获得该文件的读写权限:

829242u

发现:在shiyanlou中用sudo创建的文件forloutest的User和用户组都是root,所以一开始使用教程里的"chmod go+"命令没有权限,在命令前加了sudo才达到效果,最后使得这个文件对所有用户都有读写权限。

实验四 Linux目录结构及文件基本操作

Windows 一直是以存储介质为主的;Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。

FHS(英文:Filesystem Hierarchy Standard 中文:文件系统层次结构标准),多数 Linux 版本采用这种文件组织形式,FHS 定义了系统中每个区域的用途、所需要的最小构成的文件和目录同时还给出了例外处理与矛盾处理。

使用-p 参数创建父目录

829242

使用-r 参数递归复制文件夹

829242

rename 来实现批量重命名,不过它要用 perl 正则表达式来作为参数

829242

cat参数:

-b : 指定添加行号的方式,主要有两种:

-b a:表示无论是否为空行,同样列出行号("cat -n"就是这种方式)

-b t:只列出非空行的编号并列出(默认为这种方式)

-n : 设置行号的样式,主要有三种:

-n ln:在行号字段最左端显示

-n rn:在行号字段最右边显示,且不加 0

-n rz:在行号字段最右边显示,且加 0

-w : 行号字段占用的位数(默认为 6 位)

cat正序打印文件内容到标准输出

829242

创建1-10txt文件,再删除其中1-5txt文件。

829242

实验五 环境变量与文件查找

Shell 的环境变量作用于自身和它的子进程。在所有的 UNIX 和类 UNIX 系统中,每个进程都有其各自的环境变量设置,且默认情况下,当一个进程被创建时,除了创建过程中明确指定的话,它将继承其父进程的绝大部分环境设置。

通常我们会涉及到的变量类型有三种:

1. 当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。

2. Shell 本身内建的变量。

3. 从自定义变量导出的环境变量。

当我们在 Shell 中执行一个命令时,系统就会按照 PATH 中设定的路径按照顺序依次到目录中去查找,如果存在同名的命令,则执行先找到的那个。

829242

如何做到像使用系统命令一样执行自己创建的脚本文件或者程序呢?那就要将命令所在路径添加到 PATH 环境变量。但是实践结果又出现找不到文件

829242

在将命令所在路径添加到 PATH 中后,shell在PATH中便可以找到/mybin,故可直接执行hello_shell.sh:

确保每次启动 Shell 时自动执行上面添加自定义路径到 PATH 的命令:

829242

上述命令中 >> 表示将标准输出以追加的方式重定向到一个文件中,注意前面用到的 >是以覆盖的方式重定向到一个文件中,使用的时候一定要注意分辨。

2. 搜索文件

与搜索相关的命令常用的有 whereis,which,find 和 locate 。

作业:搜索/e t c中所有.list结尾的文件

829242

实验六 文件打包与压缩

1. zip和unzip

-r 参数表示递归打包包含子目录的全部内容,-q 参数表示为安静模式,即不向屏幕输出信息,-o,表示输出文件,需在其后紧跟打包输出文件名。压缩级别 -[1-9],1 表示最快压缩但体积大,9 表示体积最小但耗时最久。路径必须为绝对路径:

829242

2.tar

-c 表示创建一个 tar 包文件,-f 用于指定创建的文件名,文件名必须紧跟在 -f 参数之后。解包一个文件(-x 参数)到指定路径的已存在目录(-C 参数):

829242

实验七 文件系统操作与磁盘管理

硬件的设备驱动(如硬盘)和特殊设备文件(如/dev/zero和/dev/random)都像普通文件一样,只是在各自的驱动程序中实现了对应的功能,dd 也可以读取文件或写入这些文件。

用户在 Linux/UNIX 的机器上打开一个文件以前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 的指令以进行挂载。该指令通常是使用在 USB 或其他可移除存储设备上,而根目录则需要始终保持挂载的状态。

829242

使用 mount 命令挂载磁盘到目录树

用户在 Linux/UNIX 的机器上打开一个文件以前,包含该文件的文件系统必须先进行挂载的动作,此时用户要对该文件系统执行 mount 的指令以进行挂载。

829242

实验八 Linux下的帮助命令

内建命令是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,并由 shell 程序识别并在 shell 程序内部完成运行,而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。

外部命令是 Linux 系统中的实用程序部分,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。

type 命令来区分是内建命令还是外部命令:

829242

help 命令只能用于显示内建命令,外部命令的话基本上都有一个参数--help:

829242

实验九 Linux任务计划crontab

通过 crontab 命令,可在固定的间隔时间执行指定的系统指令或 shell script 脚本:

829242

829242

829242

829242

实验十 命令执行顺序控制与管道

1. 通过which, &&和 || 来选择性的执行任务,并注意它们的顺序搭配。

829242

829242

2. 管道的概念,| 用作分隔符,其前者的命令的输出可作为其后者命令的输入

829242

3.grep命令在文本或stdin中查找匹配字符串

829242

4. wc简单记数小工具

829242

5. sort排序,之前在cat命令中用过

默认为字典排序:$ cat /etc/passwd | sort

反转排序:$ cat /etc/passwd | sort -r

按特定字段排序:$ cat /etc/passwd | sort -t':' -k 3

6. uniq 去重复

uniq命令可以用于过滤或者输出重复行。

实验十一 文本处理

1. tr 命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。-d,删除和set1匹配的字符,注意不是全词匹配也不是按字符顺序匹配。-a,去除set1指定的在输入文本中连续并重复的字符

829242

2. col 命令可以将Tab换成对等数量的空格键,或反转这个操作。-x,将Tab转换为空格;-h,将空格转换为Tab。

829242

3.join命令

829242

4. paste命令 与join命令类似

829242

实验十二 数据流重定向

1. >命令 和 >> 命令

829242

2. 文件描述符

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于 UNIX、Linux 这样的操作系统。我们可以这样使用这些文件描述符:默认使用终端的标准输入作为命令的输入和标准输出作为命令的输出

3. 使用tee命令进行重定向

829242

4. 关于其他重定向理解还不够,今后还需加强学习。

实验十三 正则表达式

1. 正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。

2. grep命令操作

829242

3. sed工具用于过滤和转换文本的流编辑器。

打印2-5行,打印奇数行。一开始的错误是忘加空格,而导致缺少了要操作的目标文件。

829242

将shiyanlou替换成hehe,并只打印那一行

829242

实验十四~十五 Linux软件下载安装和进程概念

十四章,学习了Linux中软件下载安装的特点,重点学习了apt的含义,与dep安装命令的优势劣势;以及apt-get的相关命令;实验十五讲述了进程的相关概念,与本科操作系统课程所学类似,以及进程如何在系统中衍生,发展,以及进程之间存在的相互关系,同时了解了工作与进程,以及工作管理的一些使用性的操作。

829242

实验十六 进程管理

这一章节主要学习了top、ps、pstree等查看工具,以及使用这些命令时所得到的信息的含义,同时我们学习了用于发送重启或结束进程的信号kill命令,以及修改进程优先级的nice,renice命令。

实验十七 Linux系统日志

日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。它可以记录下系统产生的所有行为,并按照某种规范表达出来。

日志分为系统日志和应用日志

829242

829242

829242

829242

829242

如上图所示,在更新日志时发现了问题,首先在初始启动实验环境后查看历史日志,发现日志并不像教程所说一样为空,而且在我下载node.js后,再次查看日志,也没有更新。

经过思考过后,我想到了一个可能:我们的实验环境是实验楼服务器随便将一个会员使用过的环境分配来的,会员使用的环境不会清空,而我们使用的痕迹将会清空,所以在历史日志里也不会改变。

2. rsyslog日志服务程序

rsyslog 主要是由 Input、Output、Parser 这样三个模块构成的,并且了解到数据的简单走向,首先通过 Input module 来收集消息,然后将得到的消息传给 Parser module,通过分析模块的层层处理,将真正需要的消息传给 Output module,然后便输出至日志文件中。

3. logrotate日志管理工具

logrotate 程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件。我们可以根据日志文件的大小,也可以根据其天数来切割日志、管理日志,这个过程又叫做“转储”。

小结:

在本科期间,对Linux系统有过简单的操作,这次学习不仅对Linux的基础命令有了更全面更深度的学习,比如了解了常用的apt-get,以及在Windows中常用的dep;并且对其内部原理有了进一步了解。但是,由于这一周活动较多,时间较紧,对于正则表达式、重定向等内部原理还是一知半解,需要今后多看相关资料,来加强理解。

Linux内核是信息安全领域最为重要的一个内容,经过这次学习,感触更深。例如在信息系统安全所学的用户和文件的权限管理,在这次学习中就有所实践,还需进一步学习,对主体域和客体类别等安全知识进行实践操作;其次,日志的操作是维护信息安全的重要工具,因此对于日志的深入学习也是非常重要的。

总之,Linux内核原理是将来我们做项目以及参加工作的基础,需要我们潜下心来认真学习,这次的学习有些仓促,并且只是学习实验楼的知识是远远不够的,还需我们通过其他资料多多补充。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的INSERT INTO··· ON DUPLICATE KEY UPDATE使用的几种情况

保存或更新 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值,那么就会发生旧行的更新;如果插入的行数据与现有表中记录的唯一索引或者主键不重复…

java8 Stream API详解

文章目录一、Stream流概述二、创建Stream的方式相关API三、Stream的中间操作筛选与切片映射排序四、终止操作第一大类API(太过简单)第二大类AP归约收集一、Stream流概述 1、java8中有两大最为重要的改变,第一就是Lambda表达式,另…

linux实验3编写内核模块,实验2.3_内核模块_实验报告

实验报告题目: 内核模块实验1、实验目的模块是Linux系统的一种特有机制,可用以动态扩展操作系统内核功能。编写实现某些特定功能的模块,将其作为内核的一部分在管态下运行。本实验通过内核模块编程在/porc文件系统中实现系统时钟的读操作接口。2、实验内…

Java 8 Stream Api 中的 peek、map、foreach区别

#1. 前言 我在Java8 Stream中讲述了 Java 8 Stream API 的一些内容。今天再看一下peek、map、foreach区别。 2. peek peek 操作接收的是一个 Consumer 函数。顾名思义 peek 操作会按照 Consumer 函数提供的逻辑去消费流中的每一个元素,同时有可能改变元素内部的一…

wapper打成linux服务,Wrapper配置详解及高级应用(转)

转自:http://286.iteye.com/blog/1921414将一个简单的程度如HelloWorld 的应用包装秤Wrapper 服务并不复杂,甚至可以认为非常简单。但是实际项目应用过程中我们的程序一般较庞大,运行环境也较复杂。通过Wrapper 配置文件的分析与配置进一步了…

Java8 Stream 流机制和 Lambda 表达式

一、Stream 流介绍与使用场景 Stream 流介绍 java8 中的stream 与InputStream和OutputStream是完全不同的概念, stream 是用于对集合迭代器的增强,使之完成能够完成更高效的聚合操作(过滤、排序、统计分组)或者大批量数据操作。stream 与 L…

linux guide编译器,GUIDE编译器-GUIDE编程工具-GUIDE编译器下载 v1.0.2官方版-完美下载...

GUIDE编译器是款跨平台的开发环境编程工具,支持C/C 和 Pascal三种语言,具有跨平台、操作简单、跨编程语言和单文件编译调试等特点,为用户提供单文件编译、调试和运行的环境。GUIDE编译器特色1、跨平台: GUIDE 可在 linux 平台和 w…

MySQL事务隔离级别和实现原理

经常提到数据库的事务,那你知道数据库还有事务隔离的说法吗,事务隔离还有隔离级别,那什么是事务隔离,隔离级别又是什么呢?本文就帮大家梳理一下。 MySQL 事务 本文所说的 MySQL 事务都是指在 InnoDB 引擎下&#xff0…

超级全面的MySQL优化面试解析

推荐阅读(点击即可跳转阅读) 1. SpringBoot内容聚合 2. 面试题内容聚合 3. 设计模式内容聚合 4. Mybatis内容聚合 5. 多线程内容聚合 超级全面的MySQL优化面试解析 本文概要 概述 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上随着应用程序的运行&#…

mysql linux导入csv主键,MySQL导入csv文件内容到Table及数据库的自增主键设置

写在前面目的是测试将csv文件内容导入到表中, 同时记录一下自增主键的设置.测试采用MySQL8.0.新建表customer_info如下, 未设置主键.修改上表, 添加主键id, 并设置为自增.ALTER TABLE customer_info ADD COLUMN id INT AUTO_INCREMENT NOT NULL PRIMARY KEY;导入步骤1.为了模拟…

mysql 优化方法有哪些?

MySQL索引 MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这…

Java基础面试题与答案

八种基本数据类型以及包装类 八种基本数据类型默认值?大小?范围区间?包装类的缓存区间? 序号类型名称默认值大小最小值最大值包装类缓冲区间1booleanfalse1B0(false)1(true)Boolean无2byte(byte)01B-128127Byte-128 ~ 1273char‘…

学习vim的linux游戏,PacVim:一个学习 vim 命令的命令行游戏 | Linux 中国

作者 | Sk 译者 | geekpi 💎 💎 共计翻译:735 篇 贡献时间:1691 天你好,Vim用户!今天,我偶然发现了一个很酷的程序来提高 Vim 的使用技巧。Vim 是编写和编辑代码的绝佳编辑器。然而&#x…

Java多线程面试题与答案

线程 线程与进程的区别是什么? 进程指的是应用程序在操作系统中执行的副本(系统分配资源的最小单位),线程是程序执行的最小单位;进程使用独立的数据空间,而线程共享进程的数据空间。 线程状态图 多线程会…

JVM面试题与答案

JVM内存布局 JVM在内存布局上可以分为哪些区域? 堆(线程共享):GC的主要回收地,包含几乎所有的实例对象、字符串常量池;元空间(线程共享):在本地内存分配,包…

md0和md1linux软raid,软RAID管理命令mdadm详解

mdadm是linux下用于创建和管理软件RAID的命令,是一个模式化命令。但由于现在服务器一般都带有RAID阵列卡,并且RAID阵列卡也很廉价,且由于软件RAID的自身缺陷(不能用作启动分区、使用CPU实现,降低CPU利用率),因此在生产…

Dubbo常见面试题与答案

Dubbo的基础知识 Dubbo的核心架构是怎样的? Registry:注册中心。 负责服务地址的注册与查找,服务的 Provider 和 Consumer 只在启动时与注册中心交互。注册中心通过长连接感知 Provider 的存在,在 Provider 出现宕机的时候&#…

Redis常见面试题与答案

Redis的基本数据类型 Redis有哪些常用的数据类型? String:字符串(最常用的缓存)Hash:哈希(保存对象)List:有序列表(消息队列)Set:无序集合&…

c语言利用文件体写在桌面上,在C语言中怎样新建一个文件夹?

满意答案JacinthLancet推荐于 2017.10.12采纳率:56% 等级:12已帮助:35899人函数名: mkdir功 能: 建立一个目录(文件夹)用 法: int mkdir(char *pathname);程序例: (在win-tc和Dev-c下运行通过)#include #include #include int main(void){…

MySQL常见面试题与答案

存储引擎 InnoDB的主要特点是什么? MySQL5.5版本之后的默认存储引擎;支持事务;支持行级锁;支持MVCC;支持聚集索引方式存储数据。 InnoDB与MyISAM的区别? 存储引擎MyISAMInnoDB存储结构MyISAM在磁盘上存…