一、实验中出现的问题

  1. 理解不清二进制数字表示和加减赋值表示文件权限。比如 chmod 600 test.txt 中600是如何计算的。

chmod abc file
chmod 600 text.txt

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限。
r=4,w=2,x=1
若要 rw- 属性则 4+2=6;
若要 - - - 属性则0;
若要 - - - 属性则0。
即对test.txt的所有者设置读写权限.
查阅资料:菜鸟教程linux chmod命令https://www.runoob.com/linux/linux-file-attr-permission.html


2. su 与su - 命令的使用问题
不能很好辨别su和su-命令之间的区别,查询资料:
(1)su 命令只是切换了用户,但是并没有修改当前工作的环境变量,意思就是当前仍然在普通用户下的工作目录中。
这里写图片描述
(2)su - 命令不仅切换了用户,连工作目录也切换了。
3. 做测试题时发现对目录树形结构理解不够深刻。
图为树形目录结构:

输入cd,跳到自己的 home 目录 :~ 也表示为 home 目录 的意思。
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的,如上图中的 alice、bob 和 eve。
4. 因为之前centos已经安装gcc和vim,本想着在centos做一下编译可执行文件。
遇见下面的问题:

输入whereis gcc命令 发现gcc 已经安装,可能是版本太低,需要重新安装gcc,但是前提需要把yum要下载gcc依赖的包要全部卸载。想了下又直接在Ubuntu安装vim,重新做的编译可执行文件。

5. Ubuntu 64 位下解决bash: xxx: 没有那个文件或目录。

刚开始在Ubuntu 64位下运行 ./XXX文件可能说 bash 没有那个文件或目录,但是确实存在;原因是没有32位的运行库;

解决方案:

$sudo apt-get install ia32-libs

发现没有可用的软件包,那么安装提示中替代的。

sudo apt-get install lib32z1


问题解决,编译成功:

6. 解决应用程序无法链接动态库的问题

gcc 通过指定的动态库信息生成了可执行程序,但是可执行程序运行却提示无法加载到动态库。

./app: error while loading shared libraries: libcalc.so: cannot open shared object file: No such file or directory


解决办法:将动态库路径添加到环境变量LD_LIBRARY_PATH 中

  1. 找到相关的配置文件
    用户级别: ~/.bashrc —> 设置对当前用户有效,这里我用的用户级别的方法
    系统级别: /etc/profile —> 设置对所有用户有效
  2. 使用 vim 打开配置文件,在文件最后添加这样一句话
vim .bashrc
export LIBRARY_PATH=$LIBRARY_PATH:动态库的绝对路径

最后,让修改的配置文件生效,可以执行一个命令让配置重新被加载。

. ~/.bashrc

来源: 爱编程的大丙

二、实验中所学Linux命令

  1. touch 创建文件
    在实验二中可用touch命令和常用通配符{c1…c2}一次性创建多个文件。
  2. man 调用手册页
  3. ls 查看当前目录下的文件命令
    ls 查看文件权限命令
    ls -a 查看隐藏文件
    ls -dl 查看一个目录完整属性
    ls -asSh 查看所有文件大小
  4. 输出图形字符命令(实验二作业安装试用)
    同理 还是安装toilet,figlet

  5. who 显示资料命令
  6. sudo 以特权级别运行。使用这个命令有两个大前提,一是你要知道当前登录用户的密码,二是当前用户必须在 sudo 用户组。
  7. su 和su - 切换用户命令
  8. adduser 添加用户命令
  9. pwd 查看当前所在目录命令
  10. groups 查询用户所在组命令

    其中冒号之前表示用户,后面表示该用户所属的用户组。
  11. cat 读取指定文件的内容并打印到终端输出命令。
  12. grep 过滤一些不想看见的内容。实验三查看用户组信息时用到grep命令。
  13. usermod 为用户添加用户组命令。
  14. deluser 删除用户命令。
  15. groupdel 删除用户组命令。注意:倘若该群组中仍包括某些用户,则必须先删除这些用户后,才能删除群组。
  16. chown 改变文件所有者命令
    变更文件所有者:

sudo chown 变更后名 变更文件


17. echo 直接输出指定的字符串命令
18. chmod 修改文件权限命令
19. cd 命令可以切换目录
20. pwd 命令可以获取当前所在路径(绝对路径)
21. mkdir(make directories)命令可以创建一个空目录
22. cp 命令(copy)复制一个文件、目录到指定目录。要成功复制目录需要加上 -r 或者 -R 参数
23. rm(remove files or directories)命令删除一个文件、目录。要删除一个目录,也需要加上 -r 或 -R 参数;遇到权限不足删除不了的目录也可以和删除文件一样加上 -f 参数。
24. mv(move or rename files)命令移动文件(剪切)。命令格式是 mv 源目录文件 目的目录。mv还能给文件重命名。命令格式为 mv 旧的文件名 新的文件名。
25. 使用 cat,tac 和 nl 命令查看文件
前两个命令都是用来打印文件内容到标准输出(终端),其中 cat 为正序显示,tac 为倒序显示。
26. 使用 more 和 less 命令分页查看文件
27. 使用 head 和 tail 命令查看文件
28. file 命令查看文件的类型
29. 读取变量的值,使用 echo 命令和 $ 符号($ 符号用于表示引用一个变量的值)
30. declare 命令创建一个变量名
31. 与搜索相关的命令常用的有 whereis,which,find 和 locate。

三 、实验知识概述

实验1

  • Linux是一个操作系统。
  • Linux主要是系统调用和内核那两层,还包含包含一些在其上运行的应用程序。
  • Linux之父: Linus Torvalds
  • C 语言之父和 UNIX 之父: Ken Thompson和Dennis Ritchie

实验2

  • 大家熟知也最流行的实现了客户端功能的桌面环境 KDE,GNOME,XFCE,LXDE 。实验楼目前使用的 XFCE 桌面环境。
  • 常见的终端模拟器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。
  • 终端(Terminal)和控制台(Console)是有区别的。
  • 终端本质上是对应着 Linux 上的 /dev/tty 设备。
  • Shell 是指“提供给使用者使用界面”的软件(命令解析器)。Shell 是可以接受用户输入命令的程序。
  • 在 UNIX/Linux 中比较流行的常见的 Shell 有 bash、zsh、ksh、csh 。
  • Ubuntu 终端默认使用的是 bash。
  • 快捷键
    (1) tab 补全命令,补全目录、补全命令参数
    (2)Ctrl+c 强行终止当前程序
    (3)Ctrl+d 键盘输入结束或退出终端
    (4)Ctrl+s 暂停当前程序,暂停后按下任意键恢复运行
    (5)Ctrl+z 将当前程序放到后台运行,恢复到前台为命令fg
    (6)Ctrl+a 将光标移至输入行头,相当于Home键
    (7)Ctrl+e 将光标移至输入行末,相当于End键
    (8)Ctrl+k 删除从光标所在位置到行末
    (9)Alt+Backspace 向前删除一个单词
    (10)Shift+PgUp 将终端显示向上滚动
    (11)Shift+PgDn 将终端显示向下滚动
  • 通配符
    通配符是一种特殊语句,主要有星号(*)和问号(?),用来对字符串进行模糊匹配(比如文件名、参数名)。

实验3

  • 上一节讲终端时的那七个使用 [Ctrl]+[Alt]+[F1]~[F7] 进行切换的 /dev/tty 设备,这是“真终端”,伪终端就是当你在图形用户界面使用 /dev/tty7 时每打开一个终端就会产生一个伪终端。
  • 在 Linux 系统里, root 账户拥有整个系统至高无上的权限,比如新建和添加用户。
  • 需要注意 Linux 环境下输入密码是不会显示的。
  • who am i和whoami的区别
    who am i表示打开当前伪终端的用户的用户名;whoami表示查看当前登录用户的用户名。
  • 创建用户lilei 与切换用户lilei
  • 查看用户组的方法:
    方法一:使用 groups 命令
    方法二:查看 /etc/group 文件。 /etc/group 的内容包括用户组(Group)、用户组口令、GID(组 ID) 及该用户组所包含的用户(User),每个用户组一条记录。格式如下:

group_name:password:GID:user_list

  • 将其他用户加入用户组:
    切换lilei用户时没有root权限,需要切换shiyanlou用户,使用sudo usermod -G sudo lilei命令,将lilei加入sudo用户组,切换lilei用户,可以使用sudo命令获取root权限。

  • 删除用户lilei:
    注意:使用 --remove-home 参数在删除用户时候会一并将该用户的工作目录一并删除。

  • 文件权限:


    (1)读权限,表示你可以使用 cat 之类的命令来读取某个文件的内容;
    (2)写权限,表示你可以编辑和修改某个文件的内容;
    (3)执行权限,通常指可以运行的二进制程序文件或者脚本文件。

  • 修改文件权限
    文件的权限有两种表示方式
    (1)二进制数字表示
    每个文件有三组固定的权限,分别对应拥有者,所属用户组,其他用户,记住这个顺序是固定的。
    (2)加减赋值操作

chmod gou+/-rwx 文件名

g、o 还有 u 分别表示 group(用户组)、others(其他用户) 和 user(用户),+ 和 - 分别表示增加和去掉相应的权限。

  • adduser 和 useradd 的区别:
    useradd只创建用户,不设置相关信息;adduser在创建用户的同时,会创建工作目录和密码(提示你设置)。
  • 实验3作业截图:添加一个用户 loutest,使用 sudo 创建文件 /opt/forloutest,设置成用户 loutest 可以读写。

实验4

  • UNIX 是以目录为主的,Linux 也继承了这一优良特性。 Linux 是以树形目录结构的形式来构建整个系统的,可以理解为树形目录是一个用户可操作系统的骨架。

  • FHS 定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,第二层则是针对 /usr 及 /var 这两个目录的子目录来定义。

  • 绝对路径:简单地说就是以根" / "目录为起点的完整路径,以你所要到的目录为终点。

  • 相对路径:也就是相对于你当前的目录的路径,相对路径是以当前目录 . 为起点,以你所要到的目录为终点,如果是当前目录的上一级目录,则需要使用 …

  • vim编辑器的使用

  • 实验4作业截图

实验5

  • 变量就是计算机中用于记录一个值

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

    当前 Shell 进程私有用户自定义变量,如上面我们创建的 tmp 变量,只在当前 Shell 中有效。
    Shell 本身内建的变量。
    从自定义变量导出的环境变量。

  • 也有三个与上述三种环境变量相关的命令:set,env,export。

  • 两个重要文件 /etc/bashrc(有的 Linux 没有这个文件) 和 /etc/profile ,它们分别存放的是 shell 变量和环境变量。
  • .profile 只对当前用户永久生效。写在 /etc/profile 里面的是对所有用户永久生效
  • gcc 生成二进制文件默认具有可执行权限,不需要修改。
  • 实验5作业截图

2021-2022-1 20212808《Linux内核原理与分析》第一周作业相关推荐

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

    写之前回看了一遍秒速五厘米:如果?下落的速度正好 那么13年的长度刚好是地球的最远距离!直径两端 在进行实验楼操作之前,先听授了网易云课堂中孟老师关于"计算机是如何工作的?"的介绍 ...

  2. 2022-2023-1 20222809《Linux内核原理与分析》第一周作业

    Linux内核原理与分析第一周作业 配置环境 1.参考Linux(Ubuntu)系统安装图文教程中第二种借助virtualbox成功配置Ubuntu环境 2.升级更新软件包 可以通过调节分辨率和虚拟机 ...

  3. 2017-2018-1 20179215《Linux内核原理与分析》第二周作业

    20179215<Linux内核原理与分析>第二周作业 这一周主要了解了计算机是如何工作的,包括现在存储程序计算机的工作模型.X86汇编指令包括几种内存地址的寻址方式和push.pop.c ...

  4. 2018-2019-1 20189213《Linux内核原理与分析》第四周作业

    <Linux内核原理与分析>第四周学习总结: 1.课本知识总结: 本章内容并不多,首先是介绍了一些Linux内核源代码的目录结构,并基于Linux内核源代码构造一个简单的操作系统MenuO ...

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

    实验一 Linux系统简介 这一节主要学习了Linux的历史,Linux有关的重要人物以及学习Linux的方法,Linux和Windows的区别.其中学到了LInux中的应用程序大都为开源自由的软件, ...

  6. 20169210《Linux内核原理与分析》课程总结

    每周作业链接汇总 第一周作业:对实验楼<Linux 基础入门(新版)>课程的学习,其中有用户及文件权限管理.Linux 目录结构及文件基本操作.环境变量与文件查找.文件打包与解压缩等共17 ...

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

    反汇编一个简单的C程序 1.实验要求 使用: gcc –S –o test.s test.c -m32 命令编译成汇编代码,对汇编代码进行分析总结.其中test.c的具体内容如下: int g(int ...

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

    OS是如何工作的 学习任务: 阅读学习教材「庖丁解牛Linux 」第2章 学习蓝墨云班课中第三周视频「操作系统是如何工作的?」,并完成实验楼上配套实验二. 云班课学习笔记: 计算机三大法宝 程序存储计 ...

  9. 2018-2019-1 20189206 《Linux内核原理与分析》第六周作业

    linux内核分析学习笔记 --第五章 系统调用的三层机制 学习重点--深入理解系统调用的过程 给MenuOS添加命令 添加命令的方式较为简单,在LinuxKernel/menu/test.c目录下, ...

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

    第17章 设备与模块 关于设备驱动和设备管理,讨论四种内核成分. 设备类型:在所有的linux系统中为了统一普遍设备的操作所分的类. 模块:Linux内核中用于按需加载和卸载目标码的机制. 内核对象: ...

最新文章

  1. R语言ggplot2可视化绘制带有双y轴(double y axis)的分面图(facet、facet_grid)
  2. hdu1085Holding Bin-Laden Captive!组合问题
  3. OpenCV parallel_for_并行化代码
  4. XDP(eXpress Data Path)防御DDoS攻击
  5. 中科大少年班目前为止出过多少大牛?
  6. BugkuCTF-Crypto题告诉你个秘密
  7. 保存时自动加分号_CAD自动保存文件扩展名是什么?如何快速恢复自动保存文件?...
  8. 线性回归相关系数c语言,线性回归中的相关系数;
  9. STM32利用AES加密数据、解密数据
  10. Haskell语言学习笔记(75)Conduit
  11. 在线html编辑器---htmlarea 附件,在线HTML编辑器htmlarea简单使用
  12. performance的使用
  13. 关于Synergy无法启动
  14. mysql 事件统计_mysql事件统计之PERFORMANCE_SCHEMA基础详解
  15. 苹果怎么换自定义铃声?不用电脑也能搞定!
  16. @value()注解
  17. P14-前端基础-CSS属性选择器
  18. prometheus搭建
  19. 网络硬盘的起源与发展
  20. 案例精选 | 淘宝服务端高并发分布式架构演进之路

热门文章

  1. 无关时光无关距离无关悲欢:伤感QQ日志
  2. android解析解析数据格式文件,android 解析nmea原始数据
  3. 2019 年软件开发人员必学的编程语言 Top 3
  4. JDK16 新特性速览,你还能追上 Java 的更新速度吗?
  5. 传销人说话特征(建议大家都看看,防止上当!!!)
  6. C++实验 —— CMatrix类的设计与实现
  7. mysql 1114 hy000_mysql 解决 ERROR 1114 (HY000): The table 'XXX' is full
  8. Numbers Mac表格的功能与介绍
  9. 大气的家具装柜生产企业网站织梦模板
  10. 用python编写彩色螺旋线