【操作系统】实验一 熟悉LINUX环境和命令

news2024/11/26 14:33:32

实验名称: 实验一 熟悉LINUX环境和命令

实验目的:  1. 了解UNIX/LINUX的命令及使用格式。

2.熟悉UNIX/LINUX的常用基本命令。 

 3. 练习并掌握LINUX提供的vi编辑器来编译C程序

4. 学会利用gcc、gdb编译、调试C程序

实验内容:

  1. 熟悉UNIX/LINUX的常用基本命令如ls、who、w、pwd、ps、pstree等

2. 用vi编写一个简单的C程序,用gcc编译并观察编译后的结果

3. 利用gdb调试该程序

4. 运行生成的可执行文件。

实验结果记录:

  1. Ls

who

  1. w

  1. pwd

  1. ps

  1. pstree

一、LINUX的登录与退出 

1、登录 

步骤如下: 

login (输入 student) 

password (输入密码:student) 

2、退出 

在 LINUX 系统提示符$下,输入 logoutexit 或 shutdown 。 

例:$ logout 

二、LINUX 命令格式 

命令 [选项] [处理对象

例:ls -la mydir 

注意:

1)命令一般是小写字串。注意大小写有别 

2)选项通常以减号(-)再加上一个或数个字符表示,用来选择一个命令的不同操作 

3)同一行可有数个命令,命令间应以分号隔开 

4)命令后加上&可使该命令后台(background)执行 

三、常用命令 

1、目录操作 

和 DOS 相似,LINUX 采用树型目录管理结构,由根目录(/)开始一层层 

将子目录建下去,各子目录以 隔开。用户 login 后,工作目录的位置称为

home directory,由系统管理员设定。‘~’符号代表自己的 home directory, 

例如 ~/myfile 是指自己 home 目录下 myfile 这个文件。 

LINUX 的通配符有三种:’*’ 和 ’?’ 用法与 DOS 相同, 

‘-‘ 代表区间内的 

任一字符,如 test[0-5]即代表 test0test1,……,test5 的集合。 

1)显示目录文件 ls 

执行格式: ls [-atFlgR] [name] (name 可为文件或目录名称

例: ls 显示出当前目录下的文件

ls -a 显示出包含隐藏文件的所有文件 

ls -t 按照文件最后修改时间显示文件

ls -F 显示出当前目录下的文件及其类型 

ls -l 显示目录下所有文件的许可权、拥有者、文件大小、 

修改时间及名称 

ls -lg 同上 

ls -R 显示出该目录及其子目录下的文件 

注:ls与其它命令搭配使用可以生出很多技巧(最简单的如"ls -l | more"),更多用法请输 

入ls --help查看,其它命令的更多用法请输入 命令名 --help 查看. 

2)建新目录 mkdir 

执行格式: mkdir directory-name 

例:  (新建一名为 dir1 的目录) 

3)删除目录 rmdir 

执行格式: rmdir directory-name  rm directory-name 

例:rmdir dir1 删除目录 dir1,但它必须是空目录,否则无法删除 

rm -r dir1 删除目录 dir1 及其下所有文件及子目录 

rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用 

时要小心

4) 改变工作目录位置 cd 

执行格式: cd [name] 

例: cd 改变目录位置至用户 login 时的 working directory 

cd dir1 改变目录位置,至dir1目录 

cd ~user 改变目录位置,至用户的working directory 

cd .. 改变目录位置,至当前目录的上层目录 

cd ../user 改变目录位置,至上一级目录下的user目录 

cd /dir-name1/dir-name2 改变目录位置,至绝对路径(Full 

path) 

cd - 回到进入当前目录前的上一个目录 

5)显示当前所在目录 pwd 

执行格式: pwd

6)查看目录大小 du 

执行格式: du [-s] directory 

例: du dir1 显示目录 dir1 及其子目录容量(以 kb 为单位) 

du -s dir1 显示目录 dir1 的总容量 

(7)显示环境变量 

echo $HOME 显示家目录

echo $PATH 显示可执行文件搜索路径 

env 显示所有环境变量(可能很多,最好用"env | more","env grep PATH"等)

(8)修改环境变量,在bash下用export,如: 

export PATH=$PATH:/usr/local/bin 

想知道 export 的具体用法,可以用 shell 的 help 命令:help export 

2、文件操作 

1)查看文件(可以是二进制的)内容 cat 

执行格式:cat filename 或 more filename 或 cat filename|more 

例: cat file1 以连续显示方式,查看文件 file1 的内容 

more file1 

 cat file1|more 以分页方式查看文件的内容 

2)删除文件 rm 

执行格式: rm filename 

例: rm file? 

rm f* 

3)复制文件 cp 

执行格式: cp [-r] source destination 

例: cp file1 file2 将 file1 复制成 file2 

cp file1 dir1 将 file1 复制到目录 dir1 

cp /tmp/file1 将 file1 复制到当前目录 

cp /tmp/file1 file2 将 file1 复制到当前目录名为 file2 

cp –r dir1 dir2 (recursive copy)复制整个目录。

4)移动或更改文件、目录名称 mv 

执行格式: mv source destination 

例: mv file1 file2 将文件 file1,更名为 file2 

mv file1 dir1 将文件 file1,移到目录 dir1 下 

mv dir1 dir2 

3、系统询问与权限口令 

1)查看系统中的使用者 

执行格式: who 

2)查看 username 

执行格式: who am I 查看自己的 username 

3)改变自己的 username 的帐号与口令 su 

执行格式: su username 

例: su username 输入帐号 

password 输入密码 

4)文件属性的设置 chmod 

改变文件或目录的读、写、执行的允许权 

执行格式: chmod [-R] mode name 

其中[-R]为递归处理,将指定目录下所有文件及子目录一并处理 

mode为3-8位数字,是文件/目录读、写、执行允许权的缩写(r:read,数 

字代号为"4" w:write,数字代号为"2" x:execute,数字代号为"1") 

mode rwx rwx rwx 

user group other 

缩写: (u) (g) (o) 

例:chmod 755 dir1 将目录dir1设定成任何人皆有读取及执行的权利,但 

只有拥有者可作写修改。其中7=4+2+1,5=4+1 

chmod 700 file1 将 file1 设为拥有者可以读、写和执行 

chmod o+x file2 将 file2,增加拥有者可执行的权利 

chmod g+x file3 将 file3,增加组使用者可执行的权利 

chmod o-r file4 将 file4,除去其它使用者可读取的权利 

5)改变文件或目录所有权 chown 

执行格式: chown [-R] username name 

例: chown user file1 将文件 file1 改为 user 所有 

chown .fox file1 将文件file1改为fox组所有 

chown user.fox file1 将文件file1改为fox组的user所有 

chown -R user dir1 将目录 dir1 及其下所有文件和子目 

录,改为 user 所有 

6)检查用户所在组名称 groups 

执行格式: groups 

touch name

4、进程操作 

1)查看系统目前的进程 ps 

执行格式: ps [-aux] 

例: ps 或 ps -x 查看系统中属于自己的 process 

ps -au 查看系统中所有使用者的 process 

ps -aux 查看系统中包含系统内部及所有使用者的 process 

ps -aux|grep apache 找出系统中运行的所有名称中带有 

"apache"串的process 

2)查看正在 background 中执行的 process 

执行格式: jobs 

3)结束或终止进程 kill 

执行格式: kill [-9] PID PID 为利用 ps 命令所查出的 

process ID) 

例: kill 456 《操作系统》实验指导书

 kill -9 456 终止 process ID 为 456 的 process 

(4)显示系统中程序的执行状态 

例: top -q 不断地更新、显示系统程序的执行状态 

第一行显示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。 

第二行为进程情况,依次为进程总数、休眠进程数、运行进程数、僵死进程数、终止进程数。 

第三行为CPU状态,依次为用户占用、系统占用、优先进程占用、闲置进程占用。 

第四行为内存状态,依次为平均可用内存、已用内存、空闲内存、共享内存、缓存使用内存。 

第五行为交换状态,依次为平均可用交换容量、已用容量、闲置容量、高速缓存容量。 

PID 每个进程的ID。 

PPID 每个进程的父进程ID。 

UID 每个进程所有者的UID 。 

USER 每个进程所有者的用户名。 

PRI 每个进程的优先级别。 

NI 该进程的优先级值。 

SIZE 该进程的代码大小加上数据大小再加上堆栈空间大小的总数。单位是KB。 

TSIZE 该进程的代码大小。对于内核进程这是一个很奇怪的值。 

DSIZE 数据和堆栈的大小。 

TRS 文本驻留大小。 

D 被标记为不干净的页项目。 

LIB 使用的库页的大小。对于ELF进程没有作用。 

RSS 该进程占用的物理内存的总数量,单位是KB。 

SHARE 该进程使用共享内存的数量。 

STAT 该进程的状态。其中S代表休眠状态;D代表不可中断的休眠状态;R代表运行状态;Z代 

表僵死状态;T代表停止或跟踪状态。 

TIME 该进程自启动以来所占用的总CPU时间。如果进入的是累计模式,那么该时间还包括这个 

进程子进程所占用的时间。且标题会变成CTIME。 

%CPU 该进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。 

%MEM 该进程占用的物理内存占总内存的百分比。 

COMMAND 该进程的命令名称,如果一行显示不下,则会进行截取。内存中的进程会有一个完整 

的命令行 

按"ctrl+c"停止查看 

5I/O 命令 

1)管道(pipe-line)的使用 

执行格式: command1|command2 

功能:将 command1 的执行结果送到 command2 作为输入 

例: ls -R1|more 以分页方式列出当前目录文件及子目录名称 

cat file1|more 以分页方式,列出 file1 的内容 

2)标准输入控制 

执行格式: command-line<file 将 file 作为 command-line 的输入 

例: mail -s “mail test” user@iis.sinica.edu.tw<file1 

功能:将文件 file1 当作信件的内容,subject 名称为 mail test 送给收 

信人 

3)标准输出控制 

执行格式一: command>filename 

功能:将 command 的执行结果送至指定的 filename 中 

例: ls -l >list 将执行”ls -l” 的结果写入文件 list 中 

执行格式 command>!filename 

功能:同上,若 filename 文件已存在,则强迫重写 

执行格式三: command>&filename 

功能:将 command 执行所产生的任何信息写入 filename 

执行格式四:command>>filename 

功能:将 command 的执行结果,附加(append)到 filename 

6、其它常用命令 

1)命令在线帮助 man 

执行格式: man command 

例: man ls 查询 ls 这个指令的用法 

2)设定命令记录表长度 history 

执行格式一: set history=n 

例:

功能:设定命令记录表长度为 40(可记载执行过的前面 40 个命令) 

执行格式二: history 查看命令记录表的内容 

(3)显示说明 info 

执行格式: info command-name 

例: info gcc 

功能: 查看gcc的说明,按上下箭头选定菜单,回车进入,"u"键返回上 

级菜单. 

info不加参数则进入最上一级菜单. 

四、用cat 命令查看 /proc 动态文件系统目录下的文件,辨识其中的系统信息. 

例如: cat interrupts 列出当前中断占用情况 

cat ioports 列出设备的硬件IO占用情况 

cat pci 列出pci设备的情况 

2、

3、

4、

实验小结:

思考题:

  1. 什么是Shell环境变量和Shell元字符?

Shell环境变量是在Shell会话中定义的全局变量,用于控制Shell和其他程序的行为。它们包含一些系统设置和用户定义的值,例如PATH用于指定可执行程序的搜索路径。

Shell元字符是在Shell中具有特殊含义的字符,例如通配符(*,?),管道符号(|),重定向符号(>,<)等。它们用于执行各种操作,如文件操作和进程管道。

  1. 在Linux中如何挂载一个U盘?

要在Linux中挂载一个U盘,可以按照以下步骤进行: 

a. 插入U盘到计算机上。 

b. 打开终端,使用dmesg | tail命令来查看U盘设备的识别信息,通常以类似于 /dev/sdX 的形式显示,其中X是字母,表示不同的设备。 

c. 创建一个用于挂载的目标文件夹,例如:sudo mkdir /media/usbdrive 

d. 使用sudo mount /dev/sdX /media/usbdrive来挂载U盘到指定目标文件夹。 

e. 现在,U盘的内容将出现在/media/usbdrive目录下。 

f. 当完成后,可以使用sudo umount /media/usbdrive来卸载U盘。

3Linux系统中文件权限分为哪三种,用户类型为哪三种?

Linux系统中的文件权限分为三种:

用户权限(User):这是文件或目录的所有者的权限。

组权限(Group):这是文件或目录所属组的成员的权限。

其他权限(Other):这是其他用户的权限,即不是文件所有者也不是文件所属组成员的用户的权限。

用户类型分为三种:

用户(User):文件或目录的所有者,拥有最高权限。

组(Group):文件或目录所属的组。

其他(Other):不属于文件所有者或文件所属组的其他用户。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1319284.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5改进 | 卷积篇 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv&#xff08;空间深度转换卷积&#xff09;技术。SPD-Conv是一种创新的空间编码技术&#xff0c;它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念&#xff1a;它是一种将图像空间信息转换为深度信息…

Java_Lambda表达式JDK8新特性(方法引用)

一、Lambda表达式 接下来&#xff0c;我们学习一个JDK8新增的一种语法形式&#xff0c;叫做Lambda表达式。作用&#xff1a;用于简化匿名内部类代码的书写。 1.1 Lambda表达式基本使用 怎么去简化呢&#xff1f;Lamdba是有特有的格式的&#xff0c;按照下面的格式来编写Lamd…

如何用Python向图像中加入噪声

我们在做机器视觉项目的过程中&#xff0c;有的时候需要向图像中加入噪声。Pytorch本身不支持类似的功能&#xff0c;如果自己写的话&#xff0c;不但麻烦&#xff0c;而且容易出错。好在skimage支持这个功能。代码如下&#xff1a; import skimage import matplotlib.pyplot …

Web安全漏洞分析—文件包含

在当今数字化时代&#xff0c;随着Web应用程序的广泛应用&#xff0c;网络安全问题愈加凸显。其中&#xff0c;文件包含漏洞作为一种常见但危险的安全隐患&#xff0c;为恶意攻击者提供了可乘之机。在这篇博客中&#xff0c;我们将深入探讨文件包含漏洞的本质、攻击手法以及应对…

信息收集 - 域名

1、Whois查询: Whois 是一个用来查询域名是否已经被注册以及相关详细信息的数据库(如:域名所有人、域名注册商、域名注册日期和过期日期等)。通过访问 Whois 服务器,你可以查询域名的归属者联系方式和注册时间。 你可以在 域名Whois查询 - 站长之家 上进行在线查询。 2、…

python提取图片型pdf中的文字(提取pdf扫描件文字)

前言 文字型pdf提取&#xff0c;python的库一大堆&#xff0c;但是图片型pdf和pdf扫描件提取&#xff0c;还是有些难度的&#xff0c;我们需要用到OCR&#xff08;光学字符识别&#xff09;功能。 一、准备 1、安装OCR&#xff08;光学字符识别&#xff09;支持库 首先要安…

详解git pull和git fetch的区别

git pull和git fetch的区别, 网上人云亦云胡说八道的实在是太多了&#xff0c;误导我很久。 今天看到一个说得好的&#xff0c;记录一下。 前言 在我们使用git的时候用的更新代码是git fetch&#xff0c;git pull这两条指令。但是有没有小伙伴去思考过这两者的区别呢&#xff…

vue3引入Echarts图表

说明&#xff1a;echarts是父组件&#xff0c;stack是子组件&#xff0c;将stack引入到echarts文件中 查看echarts.vue时可看到stack.vue中的图表 # # # 引入方式 第一步 Echarts官网&#xff1a;快速上手 - 使用手册 - Apache ECharts 第二步 在控制台安装Echarts模块…

8.完成任务实现的SDK封装及插件式加载

1.设计 任务的实现目前完成了Modbus RTU、Modbus TCP、Virtule。任务实现应该是任意的&#xff0c;比如打印一段话&#xff0c;执行一句SQL等&#xff0c;所以系统内部的必然要做到可扩展。 要做到可扩展&#xff0c;首先第一步就是定义标准&#xff0c;所以我们首先需要封装…

nodejs+vue+微信小程序+python+PHP基于大数据的银行信用卡用户的数仓系统的设计与实现-计算机毕业设计推荐

银行信用卡用户的数仓系统综合网络空间开发设计要求。目的是将银行信用卡用户的数仓系统从传统管理方式转换为在网上管理&#xff0c;完成银行信用卡用户的数仓管理的方便快捷、安全性高、交易规范做了保障&#xff0c;目标明确。银行信用卡用户的数仓系统可以将功能划分为管理…

从文字下乡到人人学英语

从建国到改革开放&#xff0c;从恢复高考到新式教育改革&#xff0c;中国飞速发展&#xff0c;文字需求也在不断增大&#xff0c;在“地球村”的时代下&#xff0c;我们要“习文字之变&#xff0c;顺时代发展。” 古言道&#xff1a;“仓颉作书&#xff0c;后稷作稼”&#xff…

【Spark面试】Spark面试题答案

目录 1、spark的有几种部署模式&#xff0c;每种模式特点&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 2、Spark为什么比MapReduce块&#xff1f;&#xff08;☆☆☆☆☆&#xff09; 3、简单说一下hadoop和spark的shuffle相同和差异&#xff1f;&#xff08;☆☆☆☆☆…

Linux学习教程(第十三章 Linux数据备份与恢复)

第十三章 Linux数据备份与恢复 不知道大家有没有丢失过重要的数据呢&#xff1f; 丢失数据的理由是多种多样的&#xff0c;有人是因为重装系统时&#xff0c;没有把加密文件的密钥导出&#xff0c;重装系统后密钥丢失&#xff0c;导致所有的加密数据不能解密&#xff1b;也有人…

实验记录:深度学习模型收敛速度慢有哪些原因

深度学习模型收敛速度慢有哪些原因&#xff1f; 学习率设置不当&#xff1a; 学习率是算法中一个重要的超参数&#xff0c;它控制模型参数在每次迭代中的更新幅度。如果学习率过大&#xff0c;可能会导致模型在训练过程中的振荡&#xff0c;进而影响到收敛速度&#xff1b;如果…

字符设备驱动框架的编写

一. 简介 我们在学习裸机或者 STM32 的时候关于驱动的开发就是初始化相应的外设寄存器&#xff0c;在 Linux 驱动开发中&#xff0c;肯定也是要初始化相应的外设寄存器。 只是在 Linux 驱动开发中&#xff0c; 我们需要按照其规定的框架来编写驱动&#xff0c;所以说学 …

【网络安全】网络防护之旅 - Java安全机制探秘与数字证书引爆网络防线

&#x1f308;个人主页&#xff1a;Sarapines Programmer&#x1f525; 系列专栏&#xff1a;《网络安全之道 | 数字征程》⏰墨香寄清辞&#xff1a;千里传信如电光&#xff0c;密码奥妙似仙方。 挑战黑暗剑拔弩张&#xff0c;网络战场誓守长。 目录 &#x1f608;1. 初识网络安…

机场信息集成系统系列介绍(3):机场运行核心数据库(AODB)

目录 1、背景&#xff1a;什么是AODB 2、AODB包括哪些内容 3、AODB还应该适配哪些场景 4、一点点拓展 机场运行核心数据库&#xff08;AODB&#xff09;Airport Operation DataBase 1、背景&#xff1a;什么是AODB 在机场繁重的航班保障和旅客服务背后&#xff0c;庞大的…

centos安装了curl却报 -bash: curl: command not found

前因 我服务器上想用curl下载docker-compress&#xff0c;发现没有curl命令&#xff0c;就去下载安装&#xff0c;安装完成之后&#xff0c;报-bash: curl: command not found 解决方法 [rootcentos ~]# rpm -e --nodeps curl warning: file /usr/bin/curl: remove failed: …

非常好用的C++跨平台网络通信Mongoose,随笔记录

简介 Mongoose 是一个 C/C 网络库。它实现了事件驱动&#xff0c; TCP、UDP、HTTP、WebSocket、MQTT 的非阻塞 API。它连接设备 并将它们带到网上。自 2004 年以来&#xff0c;一些开源和商业 产品已经利用了它。它甚至运行在 国际空间站&#xff01; Mongoose 使嵌入式网络编…

【数据结构】(堆)Top-k|堆排序

目录 概念&#xff1a; 堆的实现 构建 初始化 销毁 插入元素 往上调整 删除堆顶元素 往下调整 返回堆顶元素 返回有效个数 是否为空 堆排序 Top-k问题 ​编辑 创建数据 堆top-k 概念&#xff1a; 堆是将数据按照完全二叉树存储方式存储到一维数组中&#xff…