




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Linux 操作系统应用与开发 实验指导手册信息工程学院计算机系统结构教研室实验一 文件管理一、实验目的掌握文件系统的基本命令。二、实验内容及步骤1.在当前目录下建立文件exam.c,将文件exam.c拷贝到/usr 这个目录下,并改名为 shiyan.c。#touch exam.c#cp exam.c /usr#cd /usr #mv exam.c shiyan.c / #mv /usr/exam.c shiyan.c2.在任何目录下回到用户主目录。#cd 3.打印当前目录。#pwd4.在当前目录中新建文件text并设置文件的属性为文件属主(u)增加(+)执行权限(x)与文件属主同组用户(g)增加写权限(w)其他用户(o) 删除(-)读权限(r)。#touch text#chmod u+x,g+w,o-r text5.创建用户xu和liu并将/home/xu目录中的所有文件拷贝到目录/home/liu中。#useradd xu#useradd liu#cp r /home/xu /home/liu6.用长格式列出/home目录下所有的文件包括隐藏文件。#ll a /home /#ls al /home7.在当前目录中创建目录aaa,并把该目录的权限设置为只有文件主有读、写和执行权限。#mkdir aaa#chmod u=rwx aaa#chmod g-rx,o-rx aaa8. 建立文件ff.txt 并用数字的形式(绝对权限)把文件的权限改为rw-rw-rw-。#touch ff.txt#chmod 666 ff.txt 9. 将/home目录拷贝到/root目录下,然后再将root下的home及子目录删除。#cp a /home /root#rmdir r f /root/home 10. 将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。#cp *.txt *.doc *.bak /home11. 将windows的一个分区挂载到/mnt/usb_disk目录。12. 使用linux命令查找/home目录下最近2小时修改过的所有文件,但不包括隐藏文件。13.在/home目录下创建名称为file的文件,并把修改时间改成2010年5月10日18点30分。14.将/home目录备份到根目录(/)下,备份文件名称为home.tar.gz。15.将/目录下的home.tar.gz恢复到/home/user/目录。16. 在/home目录下创建软链接名为soft,指向/etc/network/interfaces文件。17. 在/home目录下创建一个硬链接名为hard,指向/etc/network/interfaces文件。19.在/home目录下的soft文件末行添加#aaaa,保存后退出,查看/etc/network/interfaces文件内容是否有变化?20. 在/home目录下的hard文件末行添加#bbbb,保存后退出,查看/etc/network/interfaces文件内容是否有变化?21. 显示/etc目录下的目录(不显示文件)。22. 重启和关机命令实验二 挂载和卸载存储设备一、实验目的掌握Linux操作系统挂载和卸载存储设备的方法。二、实验内容1.查看Linux系统的分区,将其中windows系统的任意一个分区挂载到/mnt/partion1目录。Fdisk -lmount -t name -o iocharset=utf8 /dev/sdan/mnt/partion12.将该分区卸载。3.编辑/etc/fstab文件配置该分区的自动挂载。三、实验步骤1.让内核更新分区信息#partprobe2.查看分区及分区类型#df -Th3.创建挂载点#mkdir /mnt/partion14.挂载分区#mount t vfat /dev/sda5 /mnt/partion15.卸载分区#mount /dev/sda5或#mount /mnt/partion16.编辑/etc/fstab文件配置该分区的自动挂载功能。(1)#vi /etc/fstab(2)在该文件最后一行添加如下信息:/dev/sda5 mnt/pariton1 vfat iocharset=cp936 0 0(3)保存文件并退出。实验三 网络的基本配置一、实验目的掌握Linux操作系统网络的配置方法。二、实验内容及步骤1.用命令查看本机的网络配置。# ifconfig eth02.使用network manager图形化界面程序配置网络接口eth0的IP、netmask、gateway、DNS地址,并使用ifconfig命令查看是否配置成功(IP:192.168.202.x(x为座位编号),netmask:255.255.255.0, gateway:192.168.202.1,DNS:202.201.48.18)。3.使用ifconfig命令设置计算机的IP、netmask、gateway、DNS地址,重启网卡eth0后,使用ifconfig命令查看是否配置成功(IP:192.168.202.x+1(x为座位编号),netmask:255.255.255.128, gateway:192.168.202.2,DNS:202.201.48.19)。4.使用ifdown命令禁用网络接口eth0。5.使用ifup命令启动网络接口eth0。6.关闭network manager程序,通过修改/etc/network/interfaces和/etc/reslv.conf两个文件配置计算机的IP地址、netmask、gateway、DNS地址,重启网卡eth0,使用ifconfig查看是否配置成功(IP:192.168.202.x+2(x为座位编号),netmask:255.255.255.192, gateway:192.168.202.4,DNS:202.201.48.9)。实验四 NFS服务配置实验一、实验目的学会Linux操作系统中配置并建立NFS服务器。二、实验设备三、实验内容架设一台NFS服务器,并按照以下要求配置输出目录:1. 开放/nfs/shared目录,供所有用户查阅资料;2. 开放/nfs/upload目录作为192.168.1.0/24网段的数据上传目录四、实验步骤:1. 检查NFS的安装Ubuntu的nfs服务器软件是nfs-kernel-server。使用dpkg -status nfs-kernel-server来查看是否已经安装。dpkg s nfs-kernel-server如果未安装,则进行安装。2. 安装nfs-kernel-serverDependency:lib(1)下载nfs-kernel-server.deb包 (2)安装:dpkg -i nfs-kernel-server.deb3. 创建共享目录(1)创建/nfs/shared目录:mkdir /nfs/shared同时在该目录下新建文件a.txt:touch /nfs/shared/a.txt(2)创建/nfs/upload目录:mkdir /nfs/upload同时在该目录下创建文件b.txt:touch /nfs/upload/b.txt4. 配置nfs服务编辑NFS主配置文件:vi /etc/exports 添加如下语句:/nfs/shared (ro)/nfs/upload 192.168.1.0/24(rw) 存盘退出。6. 访问NFS服务器上的共享资源mount -t nfs 192.168.16.177:/nfs/shared /mnt/nfs在本机的/mnt/nfs目录下查看是否能够连接到服务器,并获取文件。实验五 shell编程实验目的1. 掌握shell的基本语法规则。2.掌握if、case等条件语句的使用3.掌握for、while等循环语句的使用方法二、实验内容及步骤1. 求前五个偶数的和 参考程序: #!/bin/bash loopcount=0 result=0 while $loopcount lt 5 do loopcount=expr $loopcount +1 increment=expr $loopcount *2 result= $result + $increment done echo result is $result“2设计一个shell程序,添加一个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。 参考程序: #!/bin/sh i=1 groupadd class1 while $i -le 30 do if $i -le 9 ;then username=stu0$i else username=stu$i fi useradd $username mkdir /home/$username chown -r $username /home/$username chgrp -r class1 /home/$username i=$($i+1) done 3编写shell程序,实现自动删除50个账号的功能。账号名为std01至std30。 参考程序: #!/bin/sh i=1 while $i -le 50 do userdel -r stud$i i=$($i+1 ) done 1.假设有一台Windows和Linux双启动的主机,Window有C、D两个分区,编写一个负责挂载的脚本程序mmnt,参数为cdrom时挂载光驱、参数为floppy时挂载软驱、参数为C(大小写都可以)时挂载Windows的C盘(有中文字符),参数为D(大小写都可以)时挂载Windows的D盘(有中文字符),参数为其它时显示帮助信息:Usage: mmnt cdrom|floppy|C|c|D|d步骤1:以root身份登录Linux系统,使用fdisk l命令查看系统连接的存储设备,主要查看windows的两个分区的名称,比如hda3, hda5等。步骤2:建立挂载点:一般地,光驱和软驱的挂载点/mnt/cdrom、/mnt/floppy由系统缺省建立,查看一下这两个目录是否存在,如果没有,手工建立;此外使用mkdir命令建立windows的C盘和D盘的挂载点:mkdir /mnt/C mkdir /mnt/D步骤3:编写/etc/fstab文件,编辑或者添加如下4行:/dev/hda3/mnt/Cvfatnoauto,iocharset=cp9360 0/dev/hda5/mnt/Dvfatnoauto,iocharset=cp9360 0/dev/cdrom /mnt/cdromiso9660noauto,owner,ro0 0/dev/fd0 /mnt/floppyautonoauto,owner0 0步骤4:编写shell脚本mmnt#!/bin/shcase $1 incdrom) mount /mnt/cdrom ;floppy) mount /mnt/floppy ;C|c) mount /mnt/C ;D|d) mount /mnt/D ;*) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;esac2.编写一个负责卸载的脚本程序umnt,完成相应的存储设备的卸载,参数的含义同上。步骤1:编写shell脚本umnt#!/bin/shcase $1 incdrom) umount /mnt/cdrom ;floppy) umount /mnt/floppy ;C|c) umount /mnt/C ;D|d) umount /mnt/D ;*) echo “Usage: mmnt cdrom|floppy|C|c|D|d”;esac步骤2:使脚本mmnt和umnt可执行chmod +x mmntchmod +x umnt实验六 Linux C程序开发一、实验目的1.掌握Linux的编译、连接、调试工具。2.掌握make工具及makefile文件的编写方法。二、实验内容及步骤1.gcc工具的基本用法(1)预处理gcc E test.c o test.i(2)编译gcc S test.i -o test.s(3)汇编gcc -c test.s -o test.o(4)连接gcc test.o -o test gcc的常用选项除了以上-c o 等选项外,其他一些选项有:-I 执行编译时使用的头文件的路径。在头文件的搜索路径列表中添加dir目录。如果在编译时需要的包含文件存放在多个目录下,可以使用多个-I 来指定各个目录:-E 预处理。-o filename 把输出文件输出到filename里-S 只是编译不汇编,生成汇编代码-c 只是编译不链接,生成目标文件“.o”-g 在可执行程序中包含标准调试信息,可以由GDB调用来调试-v 打印出编译器内部编译各过程的命令行信息和编译器的版本-L dir 在库文件的搜索路径列表中添加dir目录-static 链接静态库-lname通过这个参数连接名为libname.so或者libname.a的库文件-Dmarco在编译时加入名为marco的宏2.gcc的常用模式(1)编译模式我们只想把源程序编译成目标文件,但不执行。gcc c test.c -o test.o(2)编译连接模式将源程序编译成目标文件且可执行。gcc -o test test.c如果有多个源文件需要编译连接,则使用gcc -o test test1.c test2.c test3.c 3.给定一个test.c程序,要求按照上述预处理、编译、汇编、连接四个步骤逐一生成目标文件。test.c#includeint main()printf(“hello,worldn”);return 0;4.静态库和动态库文件的打包及库函数的调用。test1.c是主程序文件,其调用了add和sub函数,test2.c定义了add函数,test3.c定义了sub函数,我们将test2.c、test3.c编译后,打包称为函数库。静态库名libtest.a,动态库名libtest.so。然后在将test1.c的目标文件test1.o和库文件libtest.a或libtest.a一起编译链接成可执行文件。test1.c#include#include “mylib.h”int main()int x,y;x=add(10,5);y=sub(10,5);printf(“x=%d,y=%dn”,x,y);return 0;mylib.hint add(int x,int y);int sub(int x,int y);test2.cint add(int x,int y)int z;z=x+y;return z;test3.cint sub(int x,int y)int z;z=x-y;return z;(1)分别编译test1.c test2.c test3.c,生成test1.o,test2.o,test3.o。gcc c - I ./mylib.h test1.cgcc c test2.cgcc c test3.c(2)制作将test2.o和test3.o打包成静态库libtest.aar cqs libtest.a test2.o test3.o(3)链接test1.o生成可执行文件test1。因为test1.c调用了add和sub函数,这些函数在库libtest.a,所以链接时将库里面相关函数和test1.o代码一起链接生成可执行文件test1。gcc -static -o test1 test1.o -L ./ -ltest(4)运行可执行程序,查看输出结果。#./test1(5)制作动态库libtest.so。gcc shared -Fpic -o libtest.so test2.o test3.o(6)链接动态库及test1.o生成可执行文件test1。#cp ./libtest.so /usr/lib#gcc -o test1 test1.o -ltest (7)运行test1#./test15.gdb工具的使用要正常使用gdb工具调试程序,必须在gcc编译链接时加上-g 参数,然后使用gdb test1调试程序test1。使用以下命令,调试上面生成的test1程序。gdb常用命令:rootredhat home#gdb 调试文件:启动gdb(gdb) l :(字母l)从第一行开始列出源码(gdb) break n :在第n行处设置断点(gdb) break func:在函数func()的入口处设置断点(gdb) info break:查看断点信息(gdb) r:运行程序(gdb) n:单步执行(gdb) c:继续运行(gdb) p 变量 :打印变量的值(gdb) bt:查看函数堆栈(gdb) finish:退出函数(gdb) shell 命令行:执行shell命令行(gdb) set args 参数:指定运行时的参数(gdb) show args:查看设置好的参数(gdb) show paths:查看程序运行路径;set environment varname =value设置环境变量。如:set env USER=hchen;show environment varname 查看环境变量;(gdb) cd 相当于shell的cd;(gdb)pwd :显示当前所在目录(gdb)info program: 来查看程序的是否在运行,进程号,被暂停的原因。(gdb)clear 行号n:清除第n行的断点(gdb)delete 断点号n:删除第n个断点(gdb)disable 断点号n:暂停第n个断点(gdb)enable 断点号n:开启第n个断点(gdb)step:单步调试如果有函数调用,则进入函数;与命令n不同,n是不进入调用的函数的list :简记为 l ,其作用就是列出程序的源代码,默认每次显示10行。list 行号:将显示当前文件以“行号”为中心的前后10行代码,如:list 12list 函数名:将显示“函数名”所在函数的源代码,如:list mainlist :不带参数,将接着上一次 list 命令的,输出下边的内容。run:简记为 r ,其作用是运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。回车:重复上一条命令。set args:设置运行程序时的命令行参数,如:set args 33 55show args:显示命令行参数continue:简讯为 c ,其作用是继续运行被断点中断的程序。break:为程序设置断点。break 行号:在当前文件的“行号”处设置断点,如:break 33break 函数名:在用户定义的函数“函数名”处设置断点,如:break cb_buttoninfo breakpoints:显示当前程序的断点设置情况disable breakpoints Num:关闭断点“Num”,使其无效,其中“Num”为 info breakpoints 中显示的对应值enable breakpoints Num:打开断点“Num”,使其重新生效step:简记为 s ,单步跟踪程序,当遇到函数调用时,则进入此函数体(一般只进入用户自定义函数)。next:简记为 n,单步跟踪程序,当遇到函数调用时,也不进入此函数体;此命令同 step 的主要区别是,step 遇到用户自定义的函数,将步进到函数中去运行,而 next 则直接调用函数,不会进入到函数体内。until:当你厌倦了在一个循环体内单步跟踪时,这个命令可以运行程序直到退出循环体。finish:运行程序,直到当前函数完成返回,并打印函数返回时的堆栈地址和返回值及参数值等信息。stepi或nexti:单步跟踪一些机器指令。print 表达式:简记为 p ,其中“表达式”可以是任何当前正在被测试程序的有效表达式,比如当前正在调试C语言的程序,那么“表达式”可以是任何C语言的有效表达式,包括数字,变量甚至是函数调用。print a:将显示整数 a 的值print +a:将把 a 中的值加1,并显示出来print name:将显示字符串 name 的值print gdb_test(22):将以整数22作为参数调用 gdb_test() 函数print gdb_test(a):将以变量 a 作为参数调用 gdb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船舶改装工程技术的研究与试验发展考核试卷
- 自行车导航技术应用考核试卷
- 辽宁省葫芦岛市建昌县2025届五年级数学第二学期期末达标检测模拟试题含答案
- 山东省临沂市兰山区部分校2025届中考第七次适应性训练生物试题含解析
- 仲元中学高一下学期期中考试语文试题
- 上海对外经贸大学《中学学科教学设计数学》2023-2024学年第二学期期末试卷
- 天津市六校2024-2025学年高三高考模拟冲刺卷(提优卷)(一)历史试题含解析
- 南京医科大学康达学院《轮滑》2023-2024学年第二学期期末试卷
- 陕西省西安市交大附中达标名校2025届初三二诊模拟考试生物试题含解析
- 江苏省东台市第三联盟2025年初三下学期期末考试生物试题分类汇编含解析
- 身体红绿灯课件
- 国家职业技能标准 (2021年版) 公共营养师
- Pentacam白内障应用(第二版)
- 抗精神病药物的选择与联合应用
- JJF1059.1测量不确定度评定与表示(培训讲稿)
- 中国电工技术学会科技成果鉴定管理办法
- 多合规政策及流程变化对照版
- 钢箱梁的制作及安装方案
- 工程测量毕业设计毕业论文
- 包装厂质量管理体系
- 杀手数独100题
评论
0/150
提交评论