1、沈阳航空航天大学Linux实习报告沈阳航空航天大学Linux系统操作实习报告院(系):计算机学院专 业:计算机科学与技术(物联网技术方向)班 级:24010107学 号:?姓 名:?指导教师:董燕举 李晓明 毕静 完成日期:2015年7月17日1. Linux基本命令 1.了解linux所提供的用户界面中的键盘命令操作界面;2.熟练掌握常用的键盘命令。具体内容: (1) man 显示联机Linux手册 格式 $ manoprionchaptertitle. (2) ls 显示当前工作目录下内容格式 $ ls ltr 描述 ls命令根据文件名按字母顺序列出文件目录及子目录名称。 选择项 ls命令
2、有多个选择项,下面列出几个重要的选择项:l|more 以长格式列出文件,其中包括文件中的字符个数,以及最近修改的日期和时间。t 以最近修改的时间顺序列出文件。 r 将t选择的列表顺序变反。 - a 显示隐藏文件。(3)cd 切换工作目录-在目录树中移动 格式 $ cd 路径 描述 cd(change directory)命令建立指定的目录,并把它作为工作目录。 格式: cd 返回用户主目录,并把它作为工作目录。 cd 目录名称 改变现行目录到指定目录。 cd. 返回到工作目录的父目录,并把它作为工作目录。cd/ 进到根目录(4) mkdir 在当前工作目录下建立子目录 格式 $ mkdir 目
3、录名称 描述 mkdir(make directory)命令建立1个或多个指定目录。(5) rmdir 删除当前工作目录下子目录 格式 $ rmdir 目录名称.描述 rmdir(remove directory)命令删除指定目录,而目录必须为空。如果目录不为空,LINUX将显示适当的报错信息。 注释 要删除含有文件的目录,你可使用带有危险性的rmr命令。(6) rm 删除文件格式 $ rm 文件名. 描述 rm命令删除一个或多个指定文件。 选择项 i 选择项使LINUX问是否要删除指定文件。如果是这样,则键入y(表示yes),否则键入n (表示no). (7) rm r 删除目录及其文件 格
4、式 $ rm r 目录名称 描述 rm r(remove recursively)命令删除指定目录及其内容。 (8) cp 复制文件 格式 $ cp 文件名1 文件名2 描述 cp命令进行文件“文件名1”的复制拷贝,拷贝件称为“文件名2” (9) mv 移动或重新命名文件和目录 格式 $mv 文件名1 文件名2 描述 mv命令的(10) cat 直接显示文件内容格式 $ cat 文件名描述 cat命令将文件名作为其自变量显示文件的内容。2. Linux服务器配置与管理(1) DNS服务器配置与管理 A. 使用编辑器,编辑配置文件 /etc/bind/named.conf.local ;配置信息
5、如下:zone type master; file /etc/bind/db.bijing; ; zone 102.168.192.in-addr.arpa type master; file /etc/bind/db.192; ; B. 创建区资源文件 /etc/bind/db.bijing ;db.bijing内容如下:; BIND data file for local loopback interface$TTL 604800$ORIGIN . IN SOA . . (2006080401 ; Serial604800 ; Refresh86400 ; Retry2419200 ; E
6、xpire604800 ) ; Negative Cache TTL IN NS ns IN MX 0 . IN A 192.168.102.47ns IN A 192.168.102.47www IN A 192.168.102.47webserver IN CNAME wwwmail IN A 192.168.102.47ftp IN A 192.168.102.48ns2 IN A 192.168.102.48ns3 IN A 192.168.102.49 C. 创建该区的反向映射资源文件 /etc/bind/db.192 ;db.192内容如下:; BIND reverse data
7、file for local loopback interface$TTL 604800 IN SOA . . (2006080401 ; Serial604800 ; Refresh86400 ; Retry2419200 ; Expire604800 ) ; Negative Cache TTL IN NS .47 IN PTR .47 IN PTR .47 IN PTR .48 IN PTR . 48 IN PTR .49 IN PTR . D. 重启DNS服务 sudo /etc/init.d/bind9 restart ,并查看系统日志 : # tail /var/log/syslo
8、g,了解BIND的启动情况,验证是否引导正常 ; E. DNS服务器连接到本地的局域网,设置IP为192.168.102.47 ,修改系统网络配置文件/etc/network/interfaces 。用命令sudo /etc/init.d/networking restart 使网络设置生效 ; F.在客户机Linux的设置,验证网络连接或配置 ; G. 测试DNS服务器,在客户端使用nslookup 测试,是否能正确解析所设置域名。3. Linux多进程与多线程程序设计与开发(1)设计题目题目要求:Linux平台下设计和开发一个多进程或多线程程序编程语言可以用C、C+或Java。应用范畴:内
9、容不限,如信息处理、信息管理、多媒体、网络类等均可。用户界面:推荐图形用户界面,命令行界面也可(2)题目内容1、多进程程序设计: 仿照Linux多进程编程PPT中的日期服务程序,编写一个多进程程序,能够创建至少3个进程。每个进程执行不同的任务。例如:第一个进程打印一个小房子,第二个进程启动音乐播放器,第三个进程显示杨辉三角。要求:(1)理解Linux下面多进程系统调用方法: fork(),execl(), wait() (2) 每个进程的任务尽量有趣,有一定代码量和难度 (3)能够读懂代码,改代码2、多线程程序设计:仿照Linux多线程编程PPT中的创建多线程程序(在Linux多线程编程.pp
10、tx第12页),编写一个多线程程序。根据你们组的同学人数,创建线程,每个线程的任务是输出一个同学的名字3遍和线程id,主程序显示自己组号和人数。例如:30组有4名同学(赵子阳 王莉,刘思孟,陈琛),则程序产生如下四个线程(例子中的id号为虚构的):第一个线程输出:赵子阳赵子阳赵子阳 id:2348976591第二个线程输出:王莉王莉王莉 id:2348976592第三个线程输出:刘思孟刘思孟刘思孟 id:2348976593第四个线程输出:陈琛陈琛陈琛 id:2348976594主程序输出:42组有5名同学(3)设计思路 1、多进程程序设计: 利用fork函数创建子进程返回id,根据id值判断
11、父子进程,对子进程调用execl函数使用外部已经写好的程序文件进行替换。使用switch实现不同功能子进程的选择。 2、多线程程序设计:Linux系统下的多线程遵循POSIX线程接口,称为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。通过三个系统下的函数:pthread_create函数、pthread_exit函数、pthread_self函数。实现线程的创建,线程的退出,线程id的提取。(4)算法1、多进程程序设计:开始运行主进程,主进程中提供多个功能选择,当用户选择某一功能,主进程调用进程创建函数fork(),创
12、建一个具有与父进程相同代码的子进程,判断fork函数返回的进程ID,若ID=0则当前执行进程为子进程,调用进程替换函数execl替换子进程的程序并执行;若ID0则当前执行进程为父进程,父进程要调用wait()函数等待子进程运行结束,自己才能结束;多进程算法流程图:图 1 多进程程序算法流程图2、多线程程序设计: 通过pthread_create函数创建线程,定义线程启动函数thrd_func函数,在函数创建成功后,调用启动函数,执行线程所要完成的工作,打映小组成员和提取线程id,最后输出。 多线程算法流程图:图 2 多线程程序算法流程图(5)测试用例与测试结果1、多进程程序设计: 表1 多进程
13、测试用例测试用例号输入数据期望输出14【4】阶环方阵如下: 1 1 1 1 1 2 2 1 1 2 2 1 1 1 1 123【3】 阶杨辉三角如下: 1 1 1 1 2 12、多线程程序设计:表2 多线程测试用例测试用例号输入数据期望输出1无name:袁芹袁芹袁芹TID: 3555813120.name:宁新浩宁新浩宁新浩TID: 3564205824.name:李昂李昂李昂TID: 3572598528.name:徐晓龙徐晓龙徐晓龙TID: 3580991232.name:赵堃赵堃赵堃TID: 3589383936.(7)程序运行 1、多进程程序运行:图 3 多进程程序运行图2、多线程程序
14、运行:图 4 多线程程序运行图实习总结(1)小组分工本人在小组承担任务,及完成情况(2)收获与体会写实话、真话(2)Linux实习方式不足与改革建议这部分所提问题和建议写得好、有价值,我们将在评定成绩时加分附录(源程序代码)1、多进程程序:#includemain()intmatrix022=0,0,0,0;intmatrix122=0,0,0,0;intmatrix22=0,0,0,0;printf(MatrixMultip,Pleaseinputtwomatrix:n);inti,j,k;printf(npleaseinputfournumberintomatrix0:n); for(j=
15、0;j2;j+)for(k=0;k2;k+)scanf(%d,&matrix0jk); /for2 /forprintf(npleaseinputfournumberintomatrix1:n); for(j=0;j2;j+)for(k=0;k2;k+)scanf(%d,&matrix1jk); /for2 /formatrix00=(matrix000*matrix100)+(matrix001*matrix110);matrix01=(matrix000*matrix101)+(matrix001*matrix111);matrix10=(matrix010*matrix100)+(mat
16、rix011*matrix110); matrix11=(matrix010*matrix101)+(matrix011*matrix111);printf(ntheresultis:n);for(i=0;i2;i+)for(j=0;j2;j+)printf(%d,matrixij);printf(n);2、多线程程序:#include #include #include void *thrd_funca(void *arg);void *thrd_funcb(void *arg);void *thrd_funcc(void *arg);void *thrd_funcd(void *arg);
17、void *thrd_funce(void *arg);pthread_t tida,tidb,tidc,tidd,tide;int main() / 创建线程tid,且线程函数由thrd_func指向,是thrd_func的入口点,即马上执行此线程函数 if (pthread_create(&tida,NULL,thrd_funca,NULL)!=0) printf(Create thread error!n); exit(1); if (pthread_create(&tidb,NULL,thrd_funcb,NULL)!=0) printf(Create thread error!n);
18、 exit(1); if (pthread_create(&tidc,NULL,thrd_funcc,NULL)!=0) printf(Create thread error!n); exit(1); if (pthread_create(&tidd,NULL,thrd_funcd,NULL)!=0) printf(Create thread error!n); exit(1); if (pthread_create(&tide,NULL,thrd_funce,NULL)!=0) printf(Create thread error!n); exit(1); sleep(5); /race p
19、rintf(42 group 5peoplen); return 0;Void *thrd_funca(void *arg)/ printf(I am new thread!n); int i,j; char a10=赵堃; printf(name:); for(i=0;i3;i+) for(j=0;j10;j+) printf(%c,aj); /why pthread_self printf(TID: %u.n,pthread_self(); /why pthread_self pthread_exit(NULL); /退出线程/ return (void *)0);void *thrd_f
20、uncb(void *arg)/ printf(I am new thread!n); int i,j; char a10=徐晓龙; printf(name:); for(i=0;i3;i+) for(j=0;j10;j+) printf(%c,aj); /why pthread_self printf(TID: %u.n,pthread_self(); /why pthread_self pthread_exit(NULL); /退出线程/ return (void *)0);void *thrd_funcc(void *arg)/ printf(I am new thread!n); in
21、t i,j; char a10=李昂; printf(name:); for(i=0;i3;i+) for(j=0;j10;j+) printf(%c,aj); /why pthread_self printf(TID: %u.n,pthread_self(); /why pthread_self pthread_exit(NULL); /退出线程/ return (void *)0);void *thrd_funcd(void *arg)/ printf(I am new thread!n); int i,j; char a10=宁新浩; printf(name:); for(i=0;i3;
22、i+) for(j=0;j10;j+) printf(%c,aj); /why pthread_self printf(TID: %u.n,pthread_self(); /why pthread_self pthread_exit(NULL); /退出线程/ return (void *)0);void *thrd_funce(void *arg)/ printf(I am new thread!n); int i,j; char a10=袁芹; printf(name:); for(i=0;i3;i+) for(j=0;j10;j+) printf(%c,aj); /why pthread_self printf(TID: %u.n,pthread_self(); /why pthread_self pthread_exit(NULL); /退出线程/ return (void *)0);
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1