20179215《Linux内核原理与分析》第一周做业

1、Linux介绍linux

咱们如今很常见Windows系统,对于Linux则显得尤其陌生。固然我也不例外,初识Linux过程当中遇到一些困惑,但我也在实验的同时经过不断查找资料与实践中慢慢解决问题。那么下面我将从安装Ubuntu到实现一些基本实验案例谈一下个人感觉。shell

一些Linux开发名词解释

硬件,内核,应用程序理解

我以为这是首先要理解的关系。硬件属于最底层,咱们经过设备驱动系统来进行内核与设备之间的访问,内核是一个操做系统的核心,它具备访问管理硬件设备,分配系统资源,响应中断程序等等功能。而用户使用应用程序时则是经过系统调用接口来对用户空间进行操做的。能够说是层层调用的关系。编程

Linux终端与控制台

一般咱们在使用 Linux 时,并非直接与系统打交道,而是经过一个叫作 Shell 的中间程序来完成的,在图形界面下为了实现让咱们在一个窗口中完成用户输入和显示输出,Linux 系统还提供了一个叫作终端模拟器的程序(Terminal),下面是几个比较常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。而在实验中使用的的终端程序是 xfce 桌面环境自带的 xfce-terminal 。这里我就出现了疑问:咱们平时都是说打开控制台输入命令行执行指令,那么如今出现的虚拟终端是什么。查找了相关资料后总结出来我认为,之前终端是指经过电缆、网络等等串口链接上的不是指计算机自己存在的,而控制台是一台计算机上本有的,与计算机是一一对应的关系,信息都是经过控制台显示,但因为如今基本上都是独占计算机,所以区别变模糊了,如今基本上都是指能够输入命令行并显示程序运行过程当中的信息以及程序运行结果的窗口。vim

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/下面。


步骤:一、启动日志服务器 sudo service rsyslog start
二、启动crontab 服务 sudo cron -f &
三、进入 crontab 文件 crontab -e
四、编辑自动启动内容 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中运行等。 总之,代码是要不断实践的,了解了基本原理后要亲自动手操做才会有收获。

相关文章
相关标签/搜索