linux zx
更新时间:2023-10-03 11:59:01 阅读量: 综合文库 文档下载
- linux推荐度:
- 相关推荐
课程名称: LINUX
实验项目: LINUX
系统及其编程
系统及其编程实验
304教室
实验地点: 逸夫楼
专业班级: 软件工程
学生姓名: 郑骁 学号: 2011005509
指导教师:
2014年 4 月
1
方昀
实验1、Linux操作基础和系统界面的熟悉
一、实验目的
通过本实验,可以掌握Linux的基本操作、Linux的文本编辑以及Linux系统界面的转换和使用,使学生对Linux有一个基本的了解。
二、实验步骤及内容
1、Linux的基本操作。
1) 在虚拟机上以超级用户登录。
2) 在命令行方式下新建立一个用户,并设置该新用户的口令。注意用cat命令打开/etc/passwd文件,查看新用户账号创建前后该文件的变化情况。
(1)useradd student (2)passwd 12345 (3)cat /etc/passwd
3)用此用户名和口令登录系统,并用passwd命令修改口令,使用chfn命令输入用户的个人资料,并用finger查看该用户的详细资料。
(1)passwd student (2)chfn student (3)finger student
4)用who命令查看当前登录在系统中的用户列表、登录终端和登录时间以及系统中的用户总数。
5)用su命令在超级用户和普通用户之间改变身份。 2、熟悉Linux操作系统vi编辑器的使用。
1)首先使用vi编辑器编辑一个C语言源程序hello.c,程序的功能是接受用户输入的姓名,然后在屏幕上输出一条语句“Welcome 姓名”。
#include
char name[20];
printf(“Please input your name:”);
2
scanf(“%s”,name);
printf(“Welcome %s!\\n”,name); reture 0; }
2)对上述的hello.c文件进行增、删、改操作。 (1)增加文字时用i命令。 (2)删除文字时用dd命令。 (3)修改文字时用x命令。
(4)使用命令“gcc –o hello hello.c”编译源程序,如果发现程序错误,则需要反复使用vi编辑器修改源程序文件并且在修改后重新编译。
3)在vi编辑器中列出用户当前目录下的文件。 (1)利用命令:vi。 (2)利用命令:e。
3、熟悉控制台的基本操作以及控制台与X Window桌面的转换。 4、熟悉X Window桌面及文件管理器Nautils的使用。
5、通过文件管理器Nautils在X Window的桌面上建立文件hello.c的链接。 打开文件管理器,找到hello.c文件,单击鼠标右键,选择“创建链接”命令,则在文件管理器的窗口中出现一个图标,名字为“到??的链接”,并且带一个小箭头符号。只要将该图标拖放到桌面就可以建立到该项目的链接。然后通过链接打开该文件。
6、通过控制台和X Window中的文件管理器Nautils进行文件的基本操作。 最后分别通过控制台和X Window中的文件管理器Nautils在用户主目录下建立一个hello子目录,将hello.c源程序文件和编译以后产生的目标代码文件和可执行文件复制到hello子目录中,删除hello子目录中的hello.c源程序文件,最后再将hello子目录以及其中的文件一并删除。
三、实验结果与分析
1、用cat命令打开/etc/passwd文件,查看新用户账号
3
2、用finger查看该用户的详细资料
3、用who命令查看当前登录在系统中的用户列表、登录终端和登录时间以及系统中的用户总数。
4、使用命令“gcc –o hello hello.c”编译源程序,得到的文件。
4
5、用su命令在超级用户和普通用户之间改变身份
5
5、通过文件管理器Nautils在X Window的桌面上建立文件hello.c的链接。
四、小结
第一节的实验使我明白了如何在控制台下操作目录文件,并且在控
制台下创建用户,查看用户信息,删除用户,同时使用了vi编辑器编辑了简单的程序。
思考题
1、查阅资料,理解passwd和shadow文件的内容。
/etc/passwd 文件是一个纯文本文件,每行采用了相同的格式: name:password:uid:gid:comment:home:shell;name 用户登录名 password 用户口令。此域中的口令是加密的。当用户登录系统时,系统对输入的口令采取相同的算法,与此域中的内容进行比较。如果此域为空,表明该用户登录时不需要口令。 uid 指定用户的 UID。用户登录进系统后,系统通过该值,而不是用户名来识别用户。 gid GID。如果系统要对相同的一群人赋予相同的权利,则使用该值。 comment 用来保存用户的真实姓名和个人细节。 home 指定用户的主目录的绝对路径。shell 如果用户登录成功,则要执行的命令的绝对路径放在这一区域中。它可以是任何命令。
/etc/shadow由pwconv命令根据/etc/passwd 中的数据自动产生。如果查看/etc/shadow下存放的普通帐号信息如下:每个字段用: 隔开。(1):帐号名称(2):密 码 :这 里 是 加 密 过的,但高手也可以解密的。要主要安全问题(代!符号标识该帐号不能用来登录)(3):上次修改密码的日期(4):密码不可被变更的天数(5):密码需要被重新变更的天数(99999表示不需要变更)(6):密码变更前提前几天警告(7):帐号失效日期(8):帐号取消日期(9):保留条目,目前没用
2、通过实验总结用户账号管理权限的意义,总结不同情况下的用户权限问题。
用户帐号管理权限可以使系统安全性得到提高,并且可以提高各个用户之间相互独立性。
3、建立一个用户账号后,/home目录有什么变化?还有哪个文件有变化?
建立一个用户帐号后,/home目录会给新建用户添加一个已用户名为文件名的目录文件,同时在“/etc/passwd”文件和“/etc/shadow”文件的末尾增加该用户账号的记录。
6
7
实验2、Linux的文件系统和设备管理
一、实验目的
通过本实验可以掌握Linux系统中文件管理的概念,包括常用命令的格式、
文件类型、目录结构和文件系统以及Linux下存储设备的挂载与卸载的方法,并学会如何控制文件和目录的存取权限。
二、实验步骤及内容
了解Linux系统的文件、文件系统的概念,并观察Linux系统的目录结构。 1)查看系统文件/proc/filesystems,了解当前Linux系统所支持的文件系统类型。
2)查看Linux系统的目录结构,了解Linux标准目录的主要内容及其用途和操作权限。
查看当前你所处的目录,然后改变当前目录为根目录,确认当前目录为根目录后,了解Linux标准目录/usr、/home、/bin、/dev、/var、/etc和/mnt的主要用途和操作权限。
2、控制文件和目录的存取权限。
1)在用户主目录中创建一个名为mydir的目录。进入用户主目录,将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到mydir目录中,并分别命名为mycal和mycat。使用长列表命令来查看mydir目录中的各个文件。
2)使用长列表命令查看/usr/bin目录中的cal文件和/bin目录中的cat文件,并把它们与mydir目录中的文件进行比较。
3)设法在用户主目录中以home_mycal的文件名来调用mydir/mycal文件。 比较这两个文件有什么不同?文件的链接数是多少?执行home_mycal文件的执行结果是什么?
4)改变文件home_mycal的权限,使拥有者只具有读的权限。试着再运行home_mycal文件,它运行了吗?为什么?
5)删除home_mycal,这样做也删除了mydir/mycal文件吗?为什么? 3、掌握Linux下存储设备的挂载与卸载的方法。
1)建立挂载点,使用mount和umount命令手工挂载本地磁盘(U盘)。 2)使用fdisk -l命令查看设备的连接情况,主要查看U盘的名称及文件
1
系统类型。
3)卸载本地磁盘(U盘)。
4)设置/etc/fstab文件,以便在系统启动时自动挂载文件系统。
三、实验结果与分析
1、查看/proc/filesystems目录,结果如下:
2、查看Linux目录结构:
/bin 存放必要的命令
/boot 存放内核以及启动所需的文件等 /dev 存放设备文件
/etc 存放系统的配置文件
2
/home 用户文件的主目录,用户数据存放在其主目录中 /lib 存放必要的运行库
/mnt 存放临时的映射文件系统,我们常把软驱和光驱挂装在这里的floppy和cdrom子目录下。
/proc 存放存储进程和系统信息 /root 超级用户的主目录 /sbin 存放系统管理程序 /tmp 存放临时文件的目录
/usr 包含了一般不需要修改的应用程序,命令程序文件、程序库、手册和其它文档。
/var 包含系统产生的经常变化的文件
3、在用户主目录中创建一个名为mydir的目录。进入用户主目录,将/usr/bin目录中的cal文件和/bin目录中的cat文件复制到mydir目录中,并分别命名为mycal和mycat。使用长列表命令来查看mydir目录中的各个文件。
4、设法在用户主目录中以home_mycal的文件名来调用mydir/mycal文件。。
3
比较:
其实就是建立了一个快捷方式,其实新建的快捷方式执行的是原来的文件而不是其本身,这样做的好处是节省资源,不必再进行复制。
5、改变文件home_mycal的权限,使拥有者只具有读的权限。试着再运行home_mycal文件,它没有运行。因为修改连接的权限等同于修改源文件的权限。
6、删除home_mycal,这样没有删除mydir/mycal文件。因为连接文件相当于一个指向文件,删除它不会影响到源文件。
7、使用fdisk -l命令查看设备的连接情况,其中/dev/sdb4为U盘信息。
4
8、建立挂载点,使用mount和umount命令手工挂载本地磁盘(U盘)。将/dev/sdb4挂载到新建的目录/mnt/usb上。
四、小结
通过这一节的实验首先对Linux系统的文件目录有了一个初步的了解,同时对Linux的硬件管理有了初步了解,学会了如何挂载,卸载,并且明白了如何得到硬件的逻辑名,明白了linux将硬件用文件的形式呈现也为用户带来了便利。经常打错代码,导致程序出错。
回答思考题
1. 在命令行下如何检查新插入的USB设备是否被系统识别?
在命令行下插入设备后输入fdisk -l或者输入cat /proc/partitions命令查看设备信息。
2. 使用umount命令需要注意什么问题?
如果挂载的设备正在使用,那么执行卸载命令会出现“device busy”的错误信息。
3. 比较实验内容2中的home_mycal文件和mydir/mycal文件有什么不同?文件的链接数是多少?执行home_mycal文件的执行结果是什么? home_mycal是文件的一个链接,而mydir/mycal是文件复制后重命名的文件名,链接指向的是一个路径,而复制后的文件指向的确实真正的文件。执行home_mycal与执行mydir/mycal的结果是一样的,与执行
5
cal
命令的结果相同。
4. 改变文件home_mycal的权限,使拥有者只具有读的权限时再运行home_mycal文件,它运行了吗?为什么? 没有,因为home_mycal没有运行权限。
5. 删除home_mycal文件,这样做也删除了mydir/mycal文件吗?为什么? 删除home_mycal,这样没有删除mydir/mycal文件。因为连接文件相当于一个指向文件,删除它不会影响到源文件。
6
实验3、Linux下的shell编程
一、实验目的
使学生熟悉shell的基本操作,掌握shell的基本编程方法和技巧,并通过使用Linux中最常用的参数处理创建简单的shell程序来简化日常管理任务,为系统管理服务。
二、实验步骤及内容
1、以root身份登录Linux系统,查看系统的命令提示符,确定系统使用的shell程序类型。列出Linux系统常见的shell种类。
2、编写一个shell脚本程序,打印出班级总成绩排名在前3名(按总成绩递增)学生的姓名、学号和总成绩。打印输出的格式如下(姓名、学号、第1、2、3门课程成绩及总成绩):
Zhang san 23 40 70 60 170 Wang wu 31 60 60 80 200 Li si 2 100 50 90 240
3、编写一个shell脚本程序,使用弹出式菜单,并实现其简单的菜单功能:
************************************************ * MENU * * 1.copy 2.rename * * 3.remove 4.find * * 5 exit * ************************************************
即用户按下数字1,则提示用户输入源文件和目标文件后执行复制;输入数字2,则提示用户输入要更名的文件名或目录名后执行更名操作;输入数字3和4后分别执行删除和查找操作;输入数字5,则退出该菜单shell程序的执行。
要求shell脚本程序有清屏功能,能正确地执行各项命令并显示。
三、程序清单
1、程序一
1
2、程序二
2
四、实验结果与分析
1、Linux系统常见的shell种类以及root用户使用的shell类型
2、先建一个五人的基本成绩信息文件chengji,如下图:
3、运行程序一得到结果:
4、程序二的运行结果: Menu1:
3
Menu2:
Menu3:
Menu4:
五、小结
shell脚本使linux更加灵活,在做实验的过程中遇到的问题都是不知道操作命令,在参考课本以及查阅相关资料后,最终完成了shell的基本操作,并且掌握shell
的基本编程方法和技巧。
4
实验4、Linux下的C/C++编程
一、实验目的
掌握Linux下C语言编译的基本方法,通过GCC工具的熟练使用,熟悉GCC编译的四个阶段。掌握gdb调试工具的基本使用方法。理解make工具的功能,学会编制makefile的方法。
二、实验步骤及内容
实验内容:
1、 利用gcc编译C语言程序,使用不同选项,观察并分析显示结果。 2、 利用gdb调试一个编译后的C语言程序。
3、 编写一个由多个文件构成的C语言程序,编制makefile,运行make工具进行维护。
实验步骤:
1、 编制程序,实现从键盘输入n个整数,在内存中自小到大排序后输出。要求在vi中编辑,用GCC的不同选项对它进行编译:-I、-D、-E、-S、-c、-o、-L。
2、利用gdb调试工具完成下列程序的调试 程序清单:
/*callstk.c有3 个函数调用深度的调用链*/ #include
int make _key(void); int get_key_num(void); int number(void);
int main(void) {
int ret=make_key();
print(“make_key returns%d\\n”,ret); exit(EXIT_SUCCESS); }
int make_key(void) {
int ret=get_key_num(); return ret;
1
}
int get_key_num(void) {
int ret=number(); return ret, }
int number(void) {
return 10; }
3、完成对下列题目的makefile文件的编制,并使用make进行维护。 设某个正在开发的程序由以下内容组成:
①4个C语言源文件:a.c,b.c,c.c和d .c。设b.c和d.c都使用了defs.h中的声明。 ②汇编语言源文件assmb.s被某个C语言源文件调用。 ③使用了在/home/user/lib/libm.so中的一组例程。 设最后生成的可执行文件名为prog。 思考题
查阅资料,总结Linux下的4种常用的编译开发工具——编辑器、编译器、调试器及项目管理器的功能。
三、程序清单 1、sort.c:
2、makefile文件:
2
四、实验结果与分析
1、编译后的结果:
该阶段会生成一个中间文件*.i gcc -E sort.c -o sort.i;
在编译阶段,输入的是中间文件*.i,编译后生成汇编语言文件*.s gcc -S sort.i -o sort.s
在汇编阶段,将输入的汇编文件*.s转换成机器语言*.o gcc -c sort.s -o sort.o 使用-o选项直接生成可执行文件 gcc sort.o -o sort 2.用gdb调试callstk.c
用指令:gcc -g -o callstk callstk.c 编译得到可运行的callstk文件。
再调用gdb进行调试,结果如下:
3
五、小结
这一节实验是在Linux环境下编辑c程序,然后便已执行,主要是对一个已知文件内容的复制,从这个程序中不仅我对c语言操作文件的内容有了进一步的了解,而且在linux控制台下熟练的掌握了对c程序的编译和执行。对gcc编译和gdb调试文件的功能有了进一步的了解。
回答思考题
Linux下编辑器可以执行输出、删除、查找、替换、块操作等众多文本操作,而且用户可以根据自己的需要对其进行定制,这是其他编辑程序所没有的。
Linux下的编译器:在为Linux开发应用程序时,绝大多数情况下使用的都是C语言,因此几乎每一 位Linux程序员面临的首要问题都是如何灵活运用C编译器。目前Linux下最
4
常用的C语言编译器是GCC(GNU Compiler Collection),它是GNU项目中符合ANSI C标准的编译系统,能够编译用C、C++和Object C等语言编写的程序。GCC不仅功能非常强大,结构也异常灵活。最值得称道的一点就是它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada等。
Linux下的调试器:程序编写完毕以后,可能或多或少会存在一些问题,为了解决这些问题,
我们就需要对程序进行调试。Linux 下的调试工具很多,常见的有 strace、gdb、valgrind 等。strace 工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间;gdb 工具用于单步、多步运行程序,可以在指定位置设置断点,可以实时的查看堆栈信息,对于附加调试信息的可执行程序,还可以打印当前运行位置的源代码,查看任意变量内的值;valgrind 用于程序的内存调试和代码剖析,它可以跟踪程序的内存使用情况,检测出内存管理方面的 bug 。
Linux下的项目管理器: 熟悉了gcc、gdb,就基本了解了Linux下使用编辑器编写代码,
会用gcc把代码编译成可执行程序,也会使用gdb等调试程序对编译后的程序进行调试了,接下来我们就要讲到了开发流程中非常重要的另外一步。尽管它不是必须的,但在大的复杂程序的开发中非常重要。这就是make项目管理器。
5
正在阅读:
linux zx10-03
单片机音乐发生器的制作04-24
去香港买日用品攻略08-11
大学英语演讲比赛策划书3篇12-18
优美散文:轻拾岁月的阳光03-21
怎么用ps做一寸照片04-22
精彩的辩论会作文500字07-09
世少奥赛2012预赛五年级试题及答案11-21
上海代表性创意园区案例分析06-09
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- linux
- zx
- 监理工作总结由谁编制
- 2012年秋季南安市小学三年级上学期语文学习
- 家电技术思考题参考答案
- 作业13章 Microsoft Word 文档
- 《中外美术史》课程教学大纲解析
- 弹性力学基础知识归纳
- 北语15春《大学英语》(二)作业1满分答案
- 建筑电气课程设计
- 中国光纤光缆行业市场调研与发展商机研究报告(2014-2019)
- 城市道路平面交叉口规划与设计规程-2(续)
- 安全生产规定(参考)
- 维护中案列分析
- 西方经济学复习题库 学生版
- 钢筋算量操作札记 - 图文
- 河道治理新建防洪大堤、隔堤、整修加固、护坡施工组织设计技术标
- 2015春沪科版初中数学八年级下册教学计划 doc - 图文
- IPSEC&IKE原理试题
- 道德讲堂制度上墙资料
- 雀巢咖啡调研报告
- 极限与配合基本术语、定义(二)-2教案首页