操作系统:Linux基本系统命令的使用

  

SHANGHAI  UNIVERSITY

操作系统(一)实验报告

 

 

 

一、   实验目的与要求

实验目的:

1. 了解Linux运行环境,熟悉交互式分时系统、多用户环境的的运行机制。

2. 练习Linux系统命令接口的使用,学会Linux基本命令、后台命令、管道命令等命令 的操作要点。

实验要求:

1.复习操作系统中相关的用户接口概念。 查阅Linux中Shell的资料, 熟悉本《实验指导》第二部分,学习Shell的一般命令。

2. 通过终端或虚拟终端,在基于字符的交互界面中进行Shell的基本命令的操作。

二、实验环境

VMware+Linux发行版 Ubuntu 20.04版

三、实验内容及其设计与实现

3.1 实验一:思考题与讨论题

3.1.1 思考:你的用户名、用户标识、组名、组标识是什么?当前你处在系统的哪个位置中?现在有哪些用户和你一块儿共享系统?

答:用户id=1000(czy) 组id=1000(czy) 组=1000(czy);当前处在系统的/home/czy位置;现在没有用户与我共享系统(czy   :0    2022-09-10 09:33 (:0))

 

3.1.2 思考:文件链接是什么意思?有什么作用?

答:文件链接是一种文件的虚拟副本。链接是目录中指向文件真实位置的占位符,通过链接可以定位文件的位置,打开文件链接可以看到和文件相同的内容。文件链接的作用是可以在不移动文件本体的情况下在多个位置访问、修改文件。

 

3.1.4 思考:Linux文件类型有哪几种?文件的存取控制模式如何描述?

答: 普通文件(-)、目录文件(d)、字符设备文件(c)、块设备文件(b)、套接字文件(s)、符号链接文件(l)和管道文件§。文件的存取控制模式使用八进制数4、2、1来在计算机中表示:4表示读取,2表示写入,1表示执行。所以一个可以对文件读写和执行的用户权限就为:4+2+1=7.其他用户也使用该方法计算即可。

 

3.1.5 思考:执行了上述操作后,若想再修该文件,看能不能执行。为什么?

答: (1)普通用户模式下:不可以继续执行修改。原因是指令chown stud090 mytext.txt使文件所有者变更为了stud090,但是之前的指令chmod 751 mytext.txt使得非所有者且非同组用户只有执行权限,故无法修改。

(2)root用户模式下:可以修改。因为root用户一定拥有所有权限,包括读写和执行。

 

3.1.6 思考:系统如何管理系统中的多个进程?进程的家族关系是怎样体现的?有什么用?

答: 系统通过配置的进程控制块PCB来描述进程的基本情况和活动过程,进而控制和管理进程。进程的家族关系体现在创建进程的进程作为父进程,而被创建的进程则作为子进程。这种关系的用处在于可以使子进程继承父进程的资源,且父进程撤销时可以将所有子进程一并撤销。

 

3.1.7 讨论:Linux系统命令很多,在手头资料不全时,如何查看命令格式?

答: (1)使用man+命令名查看完整命令的解释。(2)使用command+命令名可以查看简略的命令格式。

 

3.1.8 讨论:Linux系统用什么方式管理多个用户操作?如何管理用户文件,隔离用户空间?用命令及结果举例说明。

答:首先, Linux 系统会根据角色不同、所完成的任务的不同给予多个用户不同的权限,保证多用户系统的安全和各个用户的隐私。其次,在 Linux 里面每个用户都有一个归属(用户组),用户组简单地理解就是一组用户的集合,它们共享一些资源和权限,同时拥有私有资源。使用者2个方法就实现了管理用户文件、隔离用户空间。

举例:

➜  czy chown stu090 mytext.txt    更改用户所属文件

➜  czy ls -l    显示文件与权限

-rw-rw-r--  1 stu090 czy       26 9月  10 11:34 mytext.txt

➜  czy chmod 751 mytext.txt    更改文件权限

chmod: 正在更改'mytext.txt' 的权限: 不允许的操作

 

由上述指令及其执行结果可知,当操作不属于自己的文件并再次尝试修改所属用户时,系统就拒绝了用户的命令,体现了用户空间被隔离开来,用户访问文件的权限也有区别。

 

3.1.9讨论:什么方式查看你的进程的管理参数?这些参数怎样体现父子关系?当结束一个父进程后其子进程如何处理?用命令及结果举例说明。

答:使用指令ps -ef查看全格式的全部进程:

 

其中“PPID”一栏就对应了当前进程的父进程的pid号。现在我们尝试打开firefox浏览器,再次输入命令“ps -ef”,可以查看与firefox有关的进程(见下图):

 

可以看到其余进程的父进程均是pid=4231的进程,接下来我们结束pid=4231 的进程并再次查看所有进程:

 

 

 

可以看到结束掉4231进程时,其子进程也全部结束了。

 

3.1.10讨论:Linux 系统“文件”的含义是什么?它的文件有几种类型?如何标识的?

答:文件时指由创建者所定义的、具有文件名的一组相关元素的集合,可以分为有结构、无结构两种。

文件的类型有多种分类方法:

 

其中按照组织形式和处理方式分类时,可以通过字母标识:普通文件(-)、目录文件(d)、字符设备文件(c)、块设备文件(b)、套接字文件(s)、符号链接文件(l)和管道文件§。

 

3.1.11讨论:Linux 系统的可执行命令主要放在什么地方?找出你的计算机中所有存放系统的可执行命令的目录位置。

答:/bin目录为普通用户可以使用的命令的存放目录, /sbin超级用户可以使用的命令的存放目录。

在我的计算机中,使用ls -F|grep "*"指令可以查询可执行命令的目录。

 

3.1.12讨论:Linux 系统得设备是如何管理的?在什么地方可以找到描述设备的信息?

答:(1)缓冲管理:在IO设备和CPU之间引入缓冲,可以有效缓和CPU和IO设备之间速度不匹配问题,提高CPU利用率,提高系统吞吐量。

(2)设备分配:系统中会设置设备控制表、控制器控制表等数据结构,用于记录设备与控制器等的标识符和状态,根据这些表格可以知道设备是可用/忙碌等。还需考虑设备的回收等问题。

(3)设备处理:即设备驱动程序,用于实现CPU和设备控制器之间的通信问题,即由CPU向设备控制器发出IO指令,要求其完成IO操作;CPU接受从控制器发出的中断请求,并响应和处理。

使用下面指令可以查询设备信息:
查看CPU信息:cat /proc/cpuinfo

查看板卡信息:cat /proc/pci

查看PCI信息:lspci (相比cat /proc/pci更直观)

查看内存信息:cat /proc/meminfo

查看USB设备:cat /proc/bus/usb/devices

查看键盘和鼠标:cat /proc/bus/input/devices

查看系统硬盘信息和使用情况:fdisk & disk - l & df

 

3.1.12讨论:画出Linux 根文件系统的框架结构。描述各目录的主要作用。你的用户主目录在哪里?

根文件系统框架结构:

 

目录主要作用:

/bin 

 

二进制可执行命令。该目录下存放着普通用户的命令

/dev 

 

系统的设备文件,即设备的驱动程序

/home 

用户主目录的基点

/lost-found

 

 

目录平时是空的,当系统非正常关机而留下的“无家可归”的文件便会储存在这里

/misc 

 

 

储存着一些特殊的字符的定义

/net 

 

存放着和网络相关的一些文件

/proc 

 

存放着用户与内核的交互信息

/sbin 

 

 

系统的管理命令,这里存放的是系统管理员使用的程序

/srv 

 

系统启动服务时可以访问的数据库目录

 

/tmp 

临时文件,重启后自动清空

 

/var 

 

某些大文件的溢出区,比如各种服务的日志文件

 

/boot 

 

启动linux的核心文件

 

/etc 

 

系统所有的配置文件都在这个目录中

 

/lib 

 

存放着和系统运行相关的库文件

 

/media 

 

存放着可移除的设备,比如软盘,光盘

 

/mnt 

挂载目录,是系统管理员临时安装文件的系统安装点

 

/opt  (option : 自由选择)

 

主要给源码安装软件时选择的安装目录位置

 

/root 

 

超级用户的目录

 

/selinux

 

主要用来加固操作系统,提高系统的安全性

 

/sys 

 

管理设备文件

 

/usr 

 

最大的目录,存放着应用程序和文件

我的主目录:

 

3.1.13讨论:Linux 系统的Shell是什么?请查找这方面的资料,说明不同版本的Shell的特点。

答:shell是命令语言、命令解释程序及程序设计语言的统称,是用户和Linux操作系统之间的接口。Linux中有多种shell,其中缺省使用的是Bash。

shell是用户和Linux内核之间的接口程序,如果把Linux内核想象成一个球体的中心,shell就是围绕内核的外层。当从shell或其他程序向Linux传递命令时,内核会做出相应的反应。 

  shell也是一个命令语言解释器,它拥有自己内建的shell命令集,shell也能被系统中其他应用程序所调用。用户在提示符下输入的命令都由shell先解释然后传给Linux核心。

  不同版本shell的特点:流行的shell有bash、ksh、csh、zsh等。Bash是大多数Linux系统默认使用的shell,bash shell是Bourne shell 的一个免费版本,它是最早的Unix shell,bash还有一个特点,可以通过help命令来查看帮助。包含的功能几乎可以涵盖shell所具有的功能,所以一般的shell脚本都会指定它为执行路径;C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell;Korn shell 的语法与Bourne shell相同,同时具备了C shell的易用特点。Zsh是目前Linux里最庞大的一种shell,它有84个内部命令,使用起来也比较复杂。

 

3.1.14讨论:下面每一项说明的是哪类文件?

 

答: (1)这是一个普通文件,其所有者拥有读、写以及执行的权限;所在组成员拥有读、写的权限;其他用户只有读的权限。

(2)这是根目录下的bin文件夹,其中包含可执行命令。

(3)tty是Teletype的缩写。Teletype是最早出现的一种终端 设备,很象电传打字机。设备名放在特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:ttySn: 串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备; 伪终端 (Pseudo Terminal)是成对的逻辑终端设备,例如/dev/ptyp3和/dev/ttyp3(或着在设备文件系统中分别是/dev/pty/m3和 /dev/pty/s3)。它们与实际物理设备并不直接相关。如果一个程序把ttyp3看作是一个串行端口设备,则它对该端口的读/写操作会反映在该逻辑 终端设备对的另一个上面(ttyp3)。

  故ttyx3指的是ttys3(COM3的串行端口终端)或ttyp3(COM3的伪终端)

(4)目录文件,其所有者拥有读、写的权限;所在组成员拥有读、写的权限;其他用户拥有读、写的权限。

(5)文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义为:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell。

 

(6)字符设备文件,其所有者拥有读、写的权限;所在组成员拥有读、写的权限;其他用户拥有读、写的权限。

(7)首先认识lib目录的含义:/lib/ 包含许多被 /bin/ 和 /sbin/ 中的程序使用的库文件。而目录 /usr/lib/ 中含有更多用于用户程序的库文件。

(8)ubuntu中没有此类文件或目录,可能是系统文件。

 

 

3.2 实验二:OS 平台截图和说明

3.2.1 图形化用户界面下的 Shell 命令操作

【操作要求 1】显示系统时间,并将系统时间修改为 2011 年 9 月 17 日零点。

【操作步骤】

(1)进入root用户

(2)使用date命令查询当前时间

(3)使用命令date 091700002011修改时间

 

 

【操作要求 2】切换为普通用户,查看 2011 年 9 月 17 日是星期几。

【操作步骤】

(1)退出root,成为普通用户

 

(2)使用call命令查询2011年9.17

 

【操作要求 3】查看 ls 命令的-s 选项的帮助

【操作步骤】

(1)     输入 “man ls” 命令,得到技术文档:

 

(2)     找到-s,可知 ls 命令的-s 选项等同于—size,是打印每个文件被分配的大小

 

(3)按q退出技术文档

 

 

【操作要求 4】查看/etc 目录下所有文件和子目录的详细信息

【操作步骤】

(1)     输入命令“cd /etc”,切换到/etc 目录。

(2)     输入命令“ls -al”,显示/etc 目录下详细信息。

 

 

3.2.2 字符界面下的 Shell 命令操作

【操作要求 1】查看当前目录。

【操作步骤】

(1)     启动计算机后默认会启动图形化用户界面,按下 CTRL+ALT+F1 键切换到第 1 个虚拟终端。

 

(2)     以普通用户czy登录系统。

 

(3)     输入命令“pwd”,显示当前目录。

 

 

【操作要求 2】用 cat 命令在用户主目录下创建一名为 f1 的文本文件,内容为: Linux is useful for us all. You can never imgaine how great it is.

【操作步骤】

(1)     输入命令“cat >f1”,屏幕上输入点光标闪烁,依次输入上述内容。 使用 cat 命令进行输入时,不能使用左右上下方向键,只能用退格键(Backspace)来删除光标前一位置的字符。并且一旦按下回车键,该行输入的字符就不可修改。

 

(2) 上述内容输入后,按 Enter 键,让光标处于输入内容的下一行,按 CTRL+D 键结束 输入。

(3) 要查看文件是否生成,输入命令“ls”即可。

 

(4) 输入命令“cat f1”,查 看 f1 文件的内容,相关操作参见如下内容。

 

 

【操作要求 3】向 f1 文件增加以下内容:Why not have a try?

【操作步骤】 (1) 输入命令“cat >>f1”,屏幕上输入点光标闪烁。

(2)     输入上述内容后,按 Enter 键,让光标处于输入内容的下一行,按 CTRL+D 键结束 输入。

 

(3)     输入“cat f1”命令,查看 f1 文件的内容,会发现 f1 文件增加了一行,相关操作参 见如下内容。

 

 

【操作要求 4】统计 f1 文件的行数,单词数和字符数,并将统计结果存放在 countf1 文件。

【操作步骤】

(1)     输入命令“wc <f1>countf1”,屏幕上不显示任何信息。

(2)     输入命令“cat countf1”,查看 countf1 文件的内容,其内容是 f1 文件的行数、单词 数和字符数信息,即 f1 文件共有 2行,18 个词和 87 个字符

 

之所以是18个词而不是19个,是因为在第一局结束时我没有按下回车而是直接输入第二句,因此系统将all.You识别为同一个词。尝试修改后重新计数,成功:

 

 

【操作要求 5】将 f1 和 countf1 文件的合并为 f 文件

【操作步骤】

(1)     输入命令“cat f1 countf1 >f”,将两个文件合并为一个文件。

(2)     输入命令“cat f”,查看 f 文件的内容,如下所示。

 

 

【操作要求 6】分页显示/etc 目录中所有文件和子目录的信息

【操作步骤】

(1)     输入命令“ls /etc|more”,屏幕显示出“ls /etc”命令输出结果的第一页,屏幕的最后一行上还出现“--More--”字样,按空格键可查看下一页信息,按 Enter 键可查看下 一行信息。

 

(2)     浏览过程中按“q”键,可结束分页显示。

 

【操作要求 7】仅显示/etc 目录中前 5 个文件和子目录。

【操作步骤】 输入命令“ls /etc |head -n 5”, 屏幕显示出“ls /etc”命令输出结果的前面 5 行.

 

 

【操作要求 7】清除屏幕内容

【操作步骤】 输入命令“clear”,则屏幕内容完全被清除,命令提示符定位在屏幕左上角。

 

 

3.2.3 通配符的使用

【操作要求 1】显示/bin/目录中所有以 c 为首字母的文件和目录

【操作步骤】 输入命令“ls /bin/c*”,屏幕将显示/bin 目录中以 c 开头的所有文件和目录

 

 

【操作要求 2】显示/bin/目录中所有以 c 为首字母,文件名只有 3 个字符的文件和目录

【操作步骤】

(1) 按向上方向键,Shell 命令提示符后出现上一步操作时输入的命令“ls /bin/c*”。

(2) 将其修改为“ls /bin/c??”,按 下 Enter 键,屏幕显示/bin 目录中以 c 为首字母,文件名只有 3 个字符的文件和目录.

 

 

【操作要求 3】显示/bin 目录中所有的首字母为 c 或 s 或 h 的文件和目录。

【操作步骤】 输入命令“ls /bin/[csh]*”,屏幕显示/bin 目录中首字母为 c 或 s 或 h 的文件和目录.

 

 

【操作要求 4】显示/bin/目录中所有的首字母是 v、w、x、y、z 的文件和目录。

【操作步骤】 输入命令“ls /bin/[!a-u]*”,屏幕显示/bin 目录中首字母是 v~z 的文件和目录

 

 

【操作要求 5】重复上一步操作

【操作步骤】 输入命令“!!”自动执行上一步操作。

 

 

【操作要求 6】查看刚执行过的 5 个命令

【操作步骤】 输入命令“history 5”,显示最近执行过的 5 个命令,相关操作参见如下内容。

 

 

3.2.4设置手工启动图形化用户界面

【操作要求 1】设置开机不启动图形化用户界面

【操作步骤】

(1)     以超级用户身份登录。

 

(2)使用vim 修改配置文件: vim /etc/default/grub

 将此行用“#”注释:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash";

将GRUB_CMDLINE_LINUX="" 修改为:GRUB_CMDLINE_LINUX="text";

将#GRUB_TERMINAL=console前的“#”号去除,即反注释该行。

 

(3)esc退出编辑,然后输入:wq!进行保存,退出vim。

 

(4)     依次输入命令:

update-grub 保存修改

systemctl set-default multi-user.target

 

(5)     重启系统,可以看到默认进入了虚拟终端之中:

 

【操作要求 2】手工启动图形化用户界面。

【操作步骤】

(1)     计算机重启后只有字符界面可用,输入用户名和相应的口令后,登录 Linux 系统。

 

(2)     输入命令“startx”,启动图形化用户界面。

 

(3) 单击「系统」菜单=>「注销」,点击log out,返回到字符界面

 

四、收获与体会

说明:撰写完成该实验后的收获和体会。

在本次实验中我了解和实践到了多种类型、功能各异的指令,其中一些指令,例如cal +时间 让我理解了为什么课本上说shell终端可以做图形化界面做不了的事。学习linux之前虽然也有在windows的cmd和powershell使用指令的经历,但都是为了解决某个具体问题而使用的,没有理解指令的用处。比如查找2011年的日历,固然可以在图形化界面的“日期”app查询,但是需要依次回溯至2011年,具有不便之处,不如直接使用指令查询来的方便快捷。此外,掌握了man+指令调出说明文档的方法实在是令人振奋,因为记住指令名本身就比较难,更不要说繁多的参数,有了技术文档就可以方便查阅和使用。

在之后,希望可以了解更多指令的用法,探索更多可以在shell下完成的操作。

 

                            

 

 

posted @   丘丘王  阅读(673)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
鼠标点击页面特效

尝试在空白处点击鼠标

点击右上角即可分享
微信分享提示