20179215《Linux内核原理与分析》第一周作业
一、Linux介绍
我们现在很常见Windows系统,对于Linux则显得尤为陌生。当然我也不例外,初识Linux过程中遇到一些困惑,但我也在实验的同时通过不断查找资料与实践中慢慢解决问题。那么下面我将从安装Ubuntu到实现一些基本实验案例谈一下我的感受。
一些Linux开发名词解释
硬件,内核,应用程序理解
我觉得这是首先要理解的关系。硬件属于最底层,我们通过设备驱动系统来进行内核与设备之间的访问,内核是一个操作系统的核心,它具有访问管理硬件设备,分配系统资源,响应中断程序等等功能。而用户使用应用程序时则是通过系统调用接口来对用户空间进行操作的。可以说是层层调用的关系。
Linux终端与控制台
通常我们在使用 Linux 时,并不是直接与系统打交道,而是通过一个叫做 Shell 的中间程序来完成的,在图形界面下为了实现让我们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫做终端模拟器的程序(Terminal),下面是几个比较常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。而在实验中使用的的终端程序是 xfce 桌面环境自带的 xfce-terminal 。这里我就出现了疑问:我们平时都是说打开控制台输入命令行执行指令,那么现在出现的虚拟终端是什么。查找了相关资料后总结出来我认为,以前终端是指通过电缆、网络等等串口连接上的不是指计算机本身存在的,而控制台是一台计算机上本有的,与计算机是一一对应的关系,信息都是通过控制台显示,但由于现在基本上都是独占计算机,因此区别变模糊了,现在基本上都是指可以输入命令行并显示程序运行过程中的信息以及程序运行结果的窗口。
shell与shell scipt
shell就是我们通常说的壳,简单理解就是我们输入的命令可以进行显示解析,是与我们进行交互的界面,是用户与内核进行交互操作的一种接口,过程则为它接收用户输入的命令,并把它送入内核去执行。同时shell还有控制脚本语言的功能。那么shell script和shell之间是什么关系呢?shell脚本是利用shell的功能所写的一个程序,这个程序是使用纯文本文件,将一些shell的语法与指令写在里面,然后用正规表示法,管道命令以及数据流重导向等功能,以达到我们所想要的处理目的。最简单的功能就是将许多指令汇整写一起,让使用者很容易地就能够一个操作执行多个命令,而shell script更是提供了数组,循环,条件以及逻辑判断等重要功能,让使用者可以直接以shell来写程序,而不必使用类似C程序语言等传统程序编写的语法。
环境变量
环境变量相当于给系统或用户应用程序设置的一些参数,,具体起什么作用这当然和具体的环境变量相关。例如在Windows操作系统下path的使用,设置path是告诉系统,当要求系统运行一个程序而没有告诉它程序所在的完整路径时,,系统除了在当前目录下面寻找此程序外,还应到哪些目录下去寻找。
Linux文件结构
对于其文件结构其实表现为目录和文件的组织形式。整体来说Linux 是以树形目录结构的形式来构建整个系统的,在控制台上输入tree /便可以直观了解(若出现错误则先进行安装即可),那么目录采用什么标准,如何显示、创建,删除目录等等,以及包含在目录下的各种文件怎么查看,编辑,创建,搜索,打包等等这些问题,我通过实验已经基本了解,下面举出部分例子进行说明。在这过程中其实遇到不少问题,比如对一些命令之间的关系表示不很理解(例如root和sudo的关系)以及初学对于命令的掌握记忆不很熟练导致还得翻书来查看命令等等。但实验本身就是熟练与理解的过程,不断实践总会有收获。
实验1:添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。
步骤为:先添加一个用户loutest,然后通过mkdir命令新建一个opt文件,进入opt文件后,通过touch命令新建一个forloutest文件,然后修改权限为读写。
实验2:1. 创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt 。2. Linux 的日志文件在哪个目录?
实验3:找出 /etc/ 目录下的所有以 .list 结尾的文件。
用命令 $ locate /etc/.list 即可实现
实验4:练习whereis,locate,which,find进行搜索文件
主要特点:whereis简单快速,locate快而全,which小而精,find精而细
实验5:有一个非常重要的文件(sources.list)但是你忘了它在哪了,你依稀记得它在/etc/目录下,现在要你把这个文件找出来,然后设置成自己可以访问,但是其他用户并不能访问。
实验6(挑战部分):小明是一个服务器管理员,他需要每天备份论坛数据(这里我们用日志替代),备份当天的日志并删除之前的日志。而且备份之后文件名是年-月-日的格式。alternatives.log在/var/log/下面。
步骤:1、启动日志服务器 sudo service rsyslog start
2、启动crontab 服务 sudo cron -f &
3、进入 crontab 文件 crontab -e
4、编辑自动启动内容 0 3 * * * cp /var/log/alternatives.log /home/shiyanlou/tmp/'date+ %y-%m-%d'
实验7(挑战部分):在linux中,对于文本的处理和分析是极为重要的,现在有一个文件叫做data1,里面记录是一些命令的记录,现在需要你从里面找出出现频率次数前3的命令并保存在/home/shiyanlou/result。
实验8(挑战部分):在文件data中匹配数字开头的行,结果写入/home/shiyanlou/num文件并且在文件data中匹配出正确格式的邮箱,结果写入一个名为/home/shiyanlou/mail的文件。
进程
我们需要初步的了解进程在系统中存在的概念,以及进程的如何在系统中衍生,发展,以及进程之间存在的相互关系,为以后学习打下基础。
简单来说,程序是为了完成某种任务而设计的软件,比如 vim 是程序。什么是进程呢?进程就是运行中的程序。程序只是一些列指令的集合,是一个静止的实体,而进程不同,进程有以下的特性:
动态性:进程的实质是一次程序执行的过程,有创建、撤销等状态的变化。而程序是一个静态的实体。
并发性:进程可以做到在一个时间段内,有多个程序在运行中。程序只是静态的实体,所以不存在并发性。
独立性:进程可以独立分配资源,独立接受调度,独立地运行。
异步性:进程以不可预知的速度向前推进。
结构性:进程拥有代码段、数据段、PCB(进程控制块,进程存在的唯一标志)。也正是因为有结构性,进程才可以做到独立地运行。
引入进程是因为传统意义上的程序已经不足以描述 OS 中各种活动之间的动态性、并发性、独立性还有相互制约性。程序就像一个公司,只是一些证书,文件的堆积(静态实体)。而当公司运作起来就有各个部门的区分,财务部,技术部,销售部等等,就像各个进程,各个部门之间可以独立运做,也可以有交互(独立性、并发性)。
而随着程序的发展越做越大,又会继续细分,从而引入了线程的概念,当代多数操作系统、Linux 2.6及更新的版本中,进程本身不是基本运行单位,而是线程的容器。就像上述所说的,每个部门又会细分为各个工作小组(线程),而工作小组需要的资源需要向上级(进程)申请。简而言之,一个程序至少有一个进程,一个进程至少有一个线程。线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
有趣的实验学习
实验9:“banner”,“figlet”,“toilet”使用
Linux"figlet"命令:这个命令会用大写方式把我们输入的字符串显示在标题栏,显示效果由ASCII字符组成。由于它不是标准设置,所以要先安装这一功能。$sudo apt-get install figlet Linux "toilet"命令:我不知道这个命令的名字源自哪里。但是它确实个五颜六色的命令。与figlet一样,它会把文本显示称标题栏,但是效果更好。它比figlet命令的效果更有艺术感。
实验10:使用wget命令将图片从网页中下载下来
简单学习总结:
通过对linux相关内容的学习,基本了解了linux是一个怎样的操作系统以及相比Windows系统具有的优点及缺点。学习到的linux使用和操作技巧,例如对于linux命令,不可能全部记忆,学会使用man和info指令查看相关命令。学会了一些简单的linux编程,如gcc编译器编译c程序并在shell中运行等。
总之,代码是要不断实践的,了解了基本原理后要亲自动手操作才会有收获。
20179215《Linux内核原理与分析》第一周作业的更多相关文章
- Linux内核原理与分析-第一周作业
本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业
前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...
- 2019-2020-1 20199303<Linux内核原理与分析>第二周作业
2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...
- 20169219 linux内核原理与分析第二周作业
"linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...
- 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业
1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...
- Linux内核原理与分析-第二周作业
写之前回看了一遍秒速五厘米:如果
- 2018-2019-1 20189221《Linux内核原理与分析》第一周作业
Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...
- 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业
这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...
- 2017-2018-1 20179215《Linux内核原理与分析》第二周作业
20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...
- 20169212《Linux内核原理与分析》第二周作业
<Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...
随机推荐
- C语言基础知识【C语言教程】
2017年7月7日23:15:51外边下雨,突然想学习c语言,所以刷一遍基础. 笔记:C 语言教程1.C 语言是一种通用的.面向过程式的计算机程序设计语言.1972 年,为了移植与开发 UNIX 操作 ...
- memcache 使用方法
Memcache::add // 添加一个值,如果已经存在,则返回falseMemcache::addServer // 添加Memcache地址Memcache::close // 关闭一个Memc ...
- MATLAB循环结构:while语句P69范数待编
while语句的一般格式为: while 条件 循环体语句 end 从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们的和. 程序如下: sum=; n=; x=input('输入一个数字 ...
- 使用weka训练一个分类器
1 训练集数据 1.1 csv格式 5.1,3.5,1.4,0.2,Iris-setosa 4.9,3.0,1.4,0.2,Iris-setosa 4.7,3.2,1.3,0.2,Iris-setos ...
- NSURLSession各文件关系
NSURLSession 通过session创建任务 @property (class, readonly, strong) NSURLSession *sharedSession; + (NSU ...
- centos7 Authentication failure
root@localhost ~]#su bash-4.2$ su Password: su: Authentication failure //这里切换的是系统用户,现在还不清楚为什么postgre ...
- 只需两步删除 node_modules
peng@PENG-PC /E/_My_File_____/home/learn/web_qianduan/mithril-demo/demo2/mithril -demo $ npm install ...
- linux 5-sort,uniq,tar,split
十二. 行的排序命令sort: 1. sort命令行选项: 选项 描述 -t 字段之间的分隔符 -f 基于字符排序时忽略大小写 -k 定义排序的域字段,或者是基于域字段的部分数据进行排序 - ...
- 通过systemd配置Docker
1. systemd Service相关目录 通常情况下,我们有3种方式可以配置etcd中的service.以docker为例,1)在目录/etc/systemd/system/docker.serv ...
- mysql练习(待补充)
2.查询‘生物’课程比‘物理’课程成绩高的所有学生的学号 思路: 获取所有生物课程的人(学号,成绩)-临时表 获取所有物理课程的人(学号,成绩)-临时表 根据学号连接两个临时表: 学号 生物成绩 物理 ...