实验1 Linux系统简介

本节主要学习了 Linux 的历史,Linux 与 Windows 的区别等入门知识。通过学习,我明确了目的,是要用 Linux 来做程序开发、搭建服务器等;并且非常接受不用或少用图形界面;尽可能多学习一些Linux的发行版。在安装Ubuntu时也遇到了不支持虚拟化的问题,进入BIOS设置得以解决。

实验2 基本概念及操作

  • 学习实践
  1. 通配符?*的区别



    ?匹配一个字符,*匹配一个或者多个字符。
  2. 批量建立文件

  • 作业
  1. banner命令





    -w参数指定打印宽度,因为实验楼的环境在屏幕中显示比较小,必须要加上宽度限制。
  2. toilet命令

  3. flight命令

实验3 用户及文件权限管理

  • 学习实践
  1. 切换用户

  2. 添加用户组

    可以使用groups命令,或者查看/etc/group文件查看用户组,使用usermod添加用户组。

  3. 更改文件所有者

    使用chown命令更改文件权限

  4. 权限更改

    (1)数字更改权限

    数字说明:

    0 - 无权限

    1 - 可执行

    2 - 可写

    3 - 可写可执行

    4 - 可读

    5 - 可读可执行

    6 - 可读可写

    7 - 可读可写可执行

    三个数字分别对应文件所有者、所属用户组、其他用户。



    (2)加减赋值更改权限

    u、g、o分别对应文件所有者、所属用户组、其他用户。

    +和-分别表示增加、去除权限。

    r、w、x分别表示读、写、执行。

  • 作业

    题目:添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。
  1. 添加用户loutest

  2. 用户loutest加入sudo用户组

  3. 切换用户创建文件并修改权限

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

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

FHS 定义了两层规范,第一层是,/ 下面的各个目录应该要放什么文件数据,例如 /etc 应该放置设置文件,/bin/sbin则应该放置可执行文件等等。第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。例如/var/log放置系统日志文件,/usr/share放置共享数据等等。

  • 学习实践
  1. rename批量修改文件名

    修改文件名可以使用mv命令,但是想要批量修改的话,需要使用rename命令。

  2. cattac命令(正反)

  3. file命令查看文件类型

  • 作业
  1. 创建一个 homework 目录,建立名为 1.txt~10.txt 文件,并删除 1.txt~5.txt

  2. Linux的日志文件在哪个目录?

    日志文件基本在/var/log和/var/run中。

    (1)/var/log/boot.log(自检过程)

    (2)/var/log/cron (crontab守护进程crond所派生的子进程的动作)

    (3)/var/log/maillog (发送到系统或从系统发出的电子邮件的活动)

    (4)/var/log/syslog (只记录警告信息)

    (5)/var/run/utmp

    (6)/var/log/wtmp(记录每个用户登录、注销及系统的启动、停机的事件)

    (7)/var/run/utmp(记录有关当前登录的每个用户的信息)

    (8)/var/log/xferlog(记录FTP会话)

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

  • 学习实践
  1. 添加环境变量

  2. 添加自定义路径且立即生效

  3. 搜索文件

    whereis --简单快速

    which --小而精

    find --精而细

    locate --快而全,通过/var/lib/mlocate/mlocate.db数据库查找,不过这个数据库也不是实时更新的,系统会使用定时任务每天自动执行 updatedb命令更新一次,所以有时候你刚添加的文件,它可能会找不到,需要手动执行一次 updatedb命令。
  • 作业

    题目:寻找文件。找出 /etc/ 目录下的所有以 .list 结尾的文件

    实验楼的环境运行不了updatedb命令,所以本次作业在自己电脑上进行。

挑战1 寻找文件

  • 目标:
  1. 找到sources.list文件(依稀记得在/etc/目录下)
  2. 把文件所有者改为自己(shiyanlou)
  3. 把权限修改为仅仅只有自己可读可写
  • 解答:

实验6 文件打包与解压缩

  • 学习实践
  1. zip打包

    -r表示递归打包,将目录下所有文件打包。

    -9表示打包速度与大小等级设定,1表示最快压缩但体积大,9表示体积最小但耗时最久。

    -q表示静默打包,不向终端输出信息。

    -o表示输出文件。

  2. tar命令

    -c表示创建一个 tar 包文件

    -x表示解压缩文件,只能解压缩到一个已存在的目录,所以下图中第一次实现错误提示。

    -f 用于指定创建的文件名,注意文件名必须紧跟在 -f 参数之后

  • 作业

    题目:创建一个名为 test 的文件,分别用 zip 和 tar 打包成压缩包,再解压到 /home/shiyanlou 目录。

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

  • 学习实践
  1. 创建虚拟磁盘

  2. 虚拟磁盘挂载

    由于实验楼环境的问题(环境中使用的 Linux 内核在编译时没有添加对 Loop device的支持),所以将无法挂载成功。



    在自己机器上挂载成功。

  • 作业

    题目:找出当前目录下面占用最大的前十个文件

    du -a | sort -n -r | head -n 10

    使用du查看当前目录,并使用-a参数显示大小,sort进行排序,head取前十。

实验8 Linux下的帮助命令

  • 学习实践

    Linux命令分为内建命令和外部命令。内建命令是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,并由 shell 程序识别并在 shell 程序内部完成运行,而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。外部命令是 Linux 系统中的实用程序部分,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。

    可以使用type进行区分。



    help命令是用于显示 shell 内建命令的简要帮助信息。

    man没有内建与外部命令的区分,显示系统手册页中的内容,大多数都是对命令的解释信息,还有一些相关的描述。

    info是 GNU 的超文本帮助系统,能够更完整的显示出 GNU 信息。

实验9 Linux任务计划crontab

  • 学习实践
  1. crontab





    添加*/1 * * * * touch /home/shiyanlou/$(date +\%Y\%m\%d\%H\%M\%S)可以实现每分钟在/home/shiyanlou目录下创建一个以当前的年月日时分秒为名字的空白文件。
  2. 查看守护进程

    虽然刚刚添加了任务,但是如果cron的守护进程并没有启动,它根本都不会监测到有任务,当然也就不会执行.可以通过以下2种方式来确定cron是否成功的在后台启动。

  3. 查看文件,可以看到已经自动执行了几次

挑战2 备份日志

  • 目标:
  1. 为shiyanlou用户添加计划任务。
  2. 每天凌晨3点的时候定时备份alternatives.log到/home/shiyanlou/tmp/目录。
  3. 命名格式为年-月-日,比如今天是2017年4月1日,那么文件名为2017-04-01。
  • 解答:

    使用crontab -e为当前用户添加计划任务,此时不能使用sudo,否则是给root用户添加计划任务。

    添加如下代码即可:

    0 3 * * * cp alternatives.log /home/shiyanlou/tmp/$(date +\%Y-\%m-\%d)

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

  • 学习实践
  1. 有选择的执行命令

    && 表示前一条命令执行成功时才执行后一条命令,|| 表示上一条命令执行失败后才执行下一条命令

  2. cut命令,1,6显示第1和第6段,1~6显示1到6段。



  3. wc计数命令

    wc 命令用于统计并输出一个文件中行、单词和字节的数目。

    -l :行数

    -w :单词数

    -c :字节数

    -m:字符数

    -L :最长行字节数

  4. wc结合管道,统计/etc下面所有目录数

实验11 简单的文本处理

  • 学习实践



    tr命令可以用来删除一段文本信息中的某些文字。或者将其进行转换。

    -d参数:删除。

    -s参数:去重。
  • 作业

    题目:在不使用转换工具的情况下,使用学过的命令手动完成 dos 文本格式到 UNIX 文本格式的转换。

    使用tr -d '\r' <test.txt> tes.txt进行转换,将test.txt转换为tst.txt。

实验12 数据流重定向

  • 学习实践
  1. 重定向

    分别进行:将cat的连续输出(heredoc方式)重定向到一个文件;

    echo命令通过管道传过来的数据作为cat命令的输入,将标准输出作为命令的输出;

    echo命令的输出从默认的标准输出重定向到一个普通文件。

  2. 标准错误定向到标准输出再定向到文件

    标准错误不能直接定向到标准输出,可以用以下两种方式:

  3. tee命令同时重定向到文件和终端

  4. exec实现shell重定向

  5. 创建、关闭文件描述符



  • 作业

    题目:理解下面这段代码的作用,实际这段代码不会正常工作,请结合这一小节的知识分析这段代码没有正确工作的原因,并设法解决这个问题。
while read filename; do
rm -iv $filename
done <<(ls)

理解:这段代码的本意是读取当前目录的文件列表,并有交互地删除。

rm -iv的作用是在删除时进行交互,并且显示步骤。它期待用户从标准输入中输入y或者n来进行是否删除的操作,但是标准输入被<<(ls)重定向了,rm命令在 <<(ls)中寻找y或者n,找不到就中断退出了。

解决:标准输入一定要给到循环体,此时将标准输入复制一份,给予rm -iv命令进行交互即可。

exec 8<&0    //此时使用3~8均可
while read filename; do
rm --iv $filename <&8
done <<(ls)

挑战3 历史命令

  • 目标:
  1. 处理文本data
  2. 将结果写入result
  3. 结果包含次数和命令,如“100 ls
  • 解答:

    cat data1 | cut -c 8- | sort |uniq -dc | sort -n -r | head -3 > result

实验13 正则表达式基础

  • 学习实践
  1. grep操作,使用正则表达式(作业:结合正则表达式做更多练习)

    注意:当^放到中括号内为排除字符,否则表示行首。



  2. 使用扩展正则表达式,加-E,不加则不执行

  3. sed

    sed工具用于过滤和转换文本的流编辑器。打印奇数行,并将"shiyanlou" 全局替换为"ly"。

    p通常与-n参数配合使用,不能省略最后的p命令。

  4. awk文本处理语言





    \t要用双引号。
  • 作业

    题目:基于 pattern space 和 hold space 实现将一个文本倒序输出和交换奇数行和偶数行。
  1. 反序

    sed '1!G;h;$!d' test.txt

    1!G —— 只有第一行不执行G命令,将hold space中的内容append回到pattern space

    h —— 第一行都执行h命令,将pattern space中的内容拷贝到hold space中

    $!d —— 最后一行不执行。其它行执行d命令,删除当前行

  2. 奇偶互换

    sed -n 'h;$!{n;G};p' test.txt

    -n —— -n参数静默模式,只打印受影响的行

    h —— 将pattern space中内容拷贝到 hold space中

    $!{n,G} —— 最后一行不执行。n进入下一行,G将hold space中内容append到pattern space中,appttern space中的两行位置交换了

    p —— 打印出交换后的两行

    注意:最后一行不执行的目的,是如果最后一行是奇数行,不需要交换直接打印。

挑战4 数据提取

  • 目标:

    在文件data2中匹配数字开头的行,结果写入/home/shiyanlou/num文件

    在文件data2中匹配出正确格式的邮箱,结果写入一个名为/home/shiyanlou/mail的文件
  • 解答:
  1. data2的内容

  2. 匹配数字开头的行

    grep '^[[:digit:]]' data2>num

  3. 匹配正确格式邮箱

    grep'^[[:alnum:]]*@[[:alnum:]]*\.com' data2>mail

实验14 Linux下软件安装

  • 学习实践
  1. apt-get是用于处理 apt包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等。

    比较有用的几个参数:

    -f——修复损坏的依赖关系

    -d——只下载不安装

    --reinstall——重新安装已经安装但可能存在问题的软件包
  2. dpkg工具——"Debian Package"的简写

    可以安装deb形式打包的软件包。
  3. 从二进制包安装

    二进制包的安装比较简单,将从网络上下载的二进制包解压后放到合适的目录,然后将包含可执行的主程序文件的目录添加进PATH环境变量即可。

实验15、16 Linux 进程概念和管理

通过这两节大致了解进程的概念、进程之间存在的相互关系、进程的查看命令pspstreetop、进程的管理命令killnicerenice等。

实验17 Linux 日志系统

通过本实验,了解了较新的系统日志收集工具rsyslog及其配置文件,还有一个日志文件管理工具logrotate,省心省力,不但可以压缩日志文件,减少存储空间,还可以将日志发送到指定E-mail,方便管理员及时查看日志。logrotate是基于CRON来运行的,其脚本是 /etc/cron.daily/logrotate;同时我们可以在 /etc/logrotate中找到其配置文件。

小结

本次进行了共计21个实验,即使以前使用过Ubuntu系统,也学习到了很多新的知识,将我对Linux系统的认识扳回了正确的方向,即使表面相似,内部的原理也是大有不同的。学习了很多知识,但是很多命令还不熟练,需要自己在实际使用中加深理解,熟练使用。

20189215《Linux内核原理与分析》第一周作业的更多相关文章

  1. Linux内核原理与分析-第一周作业

    本科期间,学校开设过linux相关的课程,当时的学习方式主要以课堂听授为主.虽然老师也提供了相关的学习教材跟参考材料,但是整体学下来感觉收获并不是太大,现在回想起来,主要还是由于自己课下没有及时动手实 ...

  2. 2019-2020-1 20199314 <Linux内核原理与分析>第一周作业

    前言 本周对实验楼的Linux基础入门进行了学习,目前学习到实验九完成到挑战二. 学习和实验内容 快速学习了Linux系统的发展历程及其简介,学习了下的变量.用户权限管理.文件打包及压缩.常用命令的和 ...

  3. 2019-2020-1 20199303<Linux内核原理与分析>第二周作业

    2019-2020-1 20199303第二周作业 1.汇编与寄存器的学习 寄存器是中央处理器内的组成部份.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中 ...

  4. 20169219 linux内核原理与分析第二周作业

    "linux内核分析"的第一讲主要讲了计算机的体系结构,和各寄存器之间对数据的处理过程. 通用寄存器 AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆 ...

  5. 2019-2020-1 20199314 <Linux内核原理与分析>第二周作业

    1.基础学习内容 1.1 冯诺依曼体系结构 计算机由控制器.运算器.存储器.输入设备.输出设备五部分组成. 1.1.1 冯诺依曼计算机特点 (1)采用存储程序方式,指令和数据不加区别混合存储在同一个存 ...

  6. Linux内核原理与分析-第二周作业

    写之前回看了一遍秒速五厘米:如果

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

    Linux内核原理与分析 - 第一周作业 实验1 Linux系统简介 Linux历史 1991 年 10 月,Linus Torvalds想在自己的电脑上运行UNIX,可是 UNIX 的商业版本非常昂 ...

  8. 2020-2021-1 20209307 《Linux内核原理与分析》第九周作业

    这个作业属于哪个课程 <2020-2021-1Linux内核原理与分析)> 这个作业要求在哪里 <2020-2021-1Linux内核原理与分析第九周作业> 这个作业的目标 & ...

  9. 20169212《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 这一周学习了MOOCLinux内核分析的第一讲,计算机是如何工作的?由于本科对相关知识的不熟悉,所以感觉有的知识理解起来了有一定的难度,不过多查查资 ...

  10. 20169210《Linux内核原理与分析》第二周作业

    <Linux内核原理与分析>第二周作业 本周作业分为两部分:第一部分为观看学习视频并完成实验楼实验一:第二部分为看<Linux内核设计与实现>1.2.18章并安装配置内核. 第 ...

随机推荐

  1. java基础---->Java关于复制的使用(一)

    这里简单记录一下java中关于浅复制和深复制的知识.很多时候,一个人选择了行走,不是因为欲望,也并非诱惑,他仅仅是听到了自己内心的声音. java中的复制clone方法 一.java对象的浅复制 一个 ...

  2. 设计模式之模板方法模式(Java实现)

    "那个,上次由于我老婆要给我做饭,所以就没有说完就走掉了...这个那个".这次和以前一样,先来开场福利(工厂方法模式已被作者踹下场).由美女抽象工厂介绍一下适用场景~大家欢迎 抽象 ...

  3. C# Global.asax文件里实现通用防SQL注入漏洞程序(适应于post/get请求)

    可使用Global.asax中的Application_BeginRequest(object sender, EventArgs e)事件来实现表单或者URL提交数据的获取,获取后传给SQLInje ...

  4. 不同linux下两网卡绑定方法

    记得原来在做性能测试时,为了提高网络吞吐率.必须将两个网卡绑定一起工作.绑定方法如下: 一.CentOS 配置   1.编辑虚拟网络接口配置文件,指定网卡IP: # vi /etc/sysconfig ...

  5. android系统自带图标

      android:src="@android:drawable/ic_media_rew"    

  6. SSH电力项目四-显示首页

    1.登录页面: 将上一节中的页面放到/WEB-INF/page/目录下,需要登录后才能访问该页面: 对应页面:/WEB-INF/page/menu/home.jsp <%@ page langu ...

  7. 纯HTML自动刷新页面或重定向(http-equiv属性的refresh)

    refresh 属性值  --  刷新与跳转(重定向)页面 refresh出现在http-equiv属性中,使用content属性表示刷新或跳转的开始时间与跳转的网址 refresh示例一:5秒之后刷 ...

  8. Linux操作系统上ADSL拨号上网的方法详解

    1.安装 yum install rp-pppoe.x86_64 2.配置PPPOE客户端软件 安装完软件包后,必须配置pppoe的配置文件/etc/ppp/pppoe.conf,从而让ADSL拨号时 ...

  9. Andorid- 反序列化,采用pull解析 xml 文件

    MainActivity.java 主入口,通过获得 XML文件 ,然后将解析后的文件标签以及文本内容拼接到 StringBuffer中,最后显示在TextView上 package com.exam ...

  10. 百度移动开发平台在用angularJS