沈阳航空航天大学Linux实习报告.docx

上传人:b****5 文档编号:7649655 上传时间:2023-01-25 格式:DOCX 页数:14 大小:93.25KB
下载 相关 举报
沈阳航空航天大学Linux实习报告.docx_第1页
第1页 / 共14页
沈阳航空航天大学Linux实习报告.docx_第2页
第2页 / 共14页
沈阳航空航天大学Linux实习报告.docx_第3页
第3页 / 共14页
沈阳航空航天大学Linux实习报告.docx_第4页
第4页 / 共14页
沈阳航空航天大学Linux实习报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

沈阳航空航天大学Linux实习报告.docx

《沈阳航空航天大学Linux实习报告.docx》由会员分享,可在线阅读,更多相关《沈阳航空航天大学Linux实习报告.docx(14页珍藏版)》请在冰豆网上搜索。

沈阳航空航天大学Linux实习报告.docx

沈阳航空航天大学Linux实习报告

沈阳航空航天大学

 

Linux系统操作实习报告

 

院(系):

计算机学院

专业:

计算机科学与技术(物联网技术方向)

班级:

24010107

学号:

姓名:

指导教师:

董燕举李晓明毕静

完成日期:

2015年7月17日

1.Linux基本命令

1.了解linux所提供的用户界面中的键盘命令操作界面;

2.熟练掌握常用的键盘命令。

具体内容:

(1)man显示联机Linux手册

[格式]$man[oprion][chapter]title...

(2)ls显示当前工作目录下内容

[格式]$ls[-ltr]

[描述]ls命令根据文件名按字母顺序列出文件目录及子目录名称。

[选择项]ls命令有多个选择项,下面列出几个重要的选择项:

-l|more以长[格式]列出文件,其中包括文件中的字符个数,以及最近修改的日期和时间。

-t以最近修改的时间顺序列出文件。

-r将-t选择的列表顺序变反。

-a显示隐藏文件。

(3)cd切换工作目录----在目录树中移动

[格式]$cd[路径]

[描述]cd(changedirectory)命令建立指定的目录,并把它作为工作目录。

[格式]:

cd返回用户主目录,并把它作为工作目录。

cd目录名称改变现行目录到指定目录。

cd..返回到工作目录的父目录,并把它作为工作目录。

cd/进到根目录

(4)mkdir在当前工作目录下建立子目录

[格式]$mkdir目录名称

[描述]mkdir(makedirectory)命令建立1个或多个指定目录。

(5)rmdir删除当前工作目录下子目录

[格式]$rmdir目录名称...

[描述]rmdir(removedirectory)命令删除指定目录,而目录必须为空。

如果目录不为空,LINUX将显示适当的报错信息。

[注释]要删除含有文件的目录,你可使用带有危险性的rm-r命令。

(6)rm删除文件

[格式]$rm文件名...

[描述]rm命令删除一个或多个指定文件。

[选择项]-i选择项使LINUX问是否要删除指定文件。

如果是这样,则键入y(表示yes),否则键入n(表示no).

(7)rm-r删除目录及其文件

[格式]$rm-r目录名称

[描述]rm-r(removerecursively)命令删除指定目录及其内容。

(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;

配置信息如下:

zone""{

typemaster;

file"/etc/bind/db.bijing";

};

zone"102.168.192.in-addr.arpa"{

typemaster;

file"/etc/bind/db.192";

};

B.创建区资源文件/etc/bind/db.bijing;

db.bijing内容如下:

;BINDdatafileforlocalloopbackinterface

$TTL604800

$ORIGIN.

@INSOA..(

2006080401;Serial

604800;Refresh

86400;Retry

2419200;Expire

604800);NegativeCacheTTL

@INNSns

@INMX0.

@INA192.168.102.47

nsINA192.168.102.47

wwwINA192.168.102.47

webserverINCNAMEwww

mailINA192.168.102.47

ftpINA192.168.102.48

ns2INA192.168.102.48

ns3INA192.168.102.49

C.创建该区的反向映射资源文件/etc/bind/db.192;

db.192内容如下:

;BINDreversedatafileforlocalloopbackinterface

$TTL604800

@INSOA..(

2006080401;Serial

604800;Refresh

86400;Retry

2419200;Expire

604800);NegativeCacheTTL

@INNS.

47INPTR.

47INPTR.

47INPTR.

48INPTR.

48INPTR.

49INPTR.

D.重启DNS服务sudo/etc/init.d/bind9restart,并查看系统日志:

#tail/var/log/syslog,了解BIND的启动情况,验证是否引导正常;

E.DNS服务器连接到本地的局域网,设置IP为192.168.102.47,修改系统网络配置文件/etc/network/interfaces。

用命令sudo/etc/init.d/networkingrestart使网络设置生效;

F.在客户机Linux的设置,验证网络连接或配置;

G.测试DNS服务器,在客户端使用nslookup测试,是否能正确解析所设置域名。

3.Linux多进程与多线程程序设计与开发

(1)设计题目

题目要求:

Linux平台下设计和开发一个多进程或多线程程序

编程语言可以用C、C++或Java。

应用范畴:

内容不限,如信息处理、信息管理、多媒体、网络类等均可。

用户界面:

推荐图形用户界面,命令行界面也可

(2)题目内容

1、多进程程序设计:

仿照Linux多进程编程PPT中的日期服务程序,编写一个多进程程序,能够创建至少3个进程。

每个进程执行不同的任务。

例如:

第一个进程打印一个小房子,第二个进程启动音乐播放器,第三个进程显示杨辉三角。

要求:

(1)理解Linux下面多进程系统调用方法:

fork(),execl(),wait()

(2)每个进程的任务尽量有趣,有一定代码量和难度

(3)能够读懂代码,改代码

2、多线程程序设计:

仿照Linux多线程编程PPT中的创建多线程程序(在Linux多线程编程.pptx第12页),编写一个多线程程序。

根据你们组的同学人数,创建线程,每个线程的任务是输出一个同学的名字3遍和线程id,主程序显示自己组号和人数。

例如:

30组有4名同学(赵子阳王莉,刘思孟,陈琛),则程序产生如下四个线程(例子中的id号为虚构的):

第一个线程输出:

赵子阳赵子阳赵子阳id:

2348976591

第二个线程输出:

王莉王莉王莉id:

2348976592

第三个线程输出:

刘思孟刘思孟刘思孟id:

2348976593

第四个线程输出:

陈琛陈琛陈琛id:

2348976594

主程序输出:

42组有5名同学

(3)设计思路

1、多进程程序设计:

利用fork函数创建子进程返回id,根据id值判断父子进程,对子进程调用execl函数使用外部已经写好的程序文件进行替换。

使用switch实现不同功能子进程的选择。

2、多线程程序设计:

Linux系统下的多线程遵循POSIX线程接口,称为pthread。

编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。

通过三个系统下的函数:

pthread_create函数、pthread_exit函数、pthread_self函数。

实现线程的创建,线程的退出,线程id的提取。

(4)算法

1、多进程程序设计:

开始运行主进程,主进程中提供多个功能选择,当用户选择某一功能,主进程调用进程创建函数fork(),创建一个具有与父进程相同代码的子进程,判断fork函数返回的进程ID,若ID=0则当前执行进程为子进程,调用进程替换函数execl替换子进程的程序并执行;若ID>0则当前执行进程为父进程,父进程要调用wait()函数等待子进程运行结束,自己才能结束;

多进程算法流程图:

图1多进程程序算法流程图

2、多线程程序设计:

通过pthread_create函数创建线程,定义线程启动函数thrd_func函数,在函数创建成功后,调用启动函数,执行线程所要完成的工作,打映小组成员和提取线程id,最后输出。

多线程算法流程图:

图2多线程程序算法流程图

(5)测试用例与测试结果

1、多进程程序设计:

表1多进程测试用例

测试用例号

输入数据

期望输出

1

4

>【4】阶环方阵如下:

1111

1221

1221

1111

2

3

>【3】阶杨辉三角如下:

1

11

121

2、多线程程序设计:

表2多线程测试用例

测试用例号

输入数据

期望输出

1

name:

袁芹袁芹袁芹TID:

3555813120.

name:

宁新浩宁新浩宁新浩TID:

3564205824.

name:

李昂李昂李昂TID:

3572598528.

name:

徐晓龙徐晓龙徐晓龙TID:

3580991232.

name:

赵堃赵堃赵堃TID:

3589383936.

(7)程序运行

1、多进程程序运行:

图3多进程程序运行图

2、多线程程序运行:

图4多线程程序运行图

实习总结

(1)小组分工

本人在小组承担任务,及完成情况

××××××××

(2)收获与体会

写实话、真话

××××××××××××××××

(2)Linux实习方式不足与改革建议

这部分所提问题和建议写得好、有价值,我们将在评定成绩时加分

××××××××××××××××

附录(源程序代码)

1、多进程程序:

#include

main(){

int matrix0[2][2]={0,0,0,0};

int matrix1[2][2]={0,0,0,0};

int matrix[2][2]={0,0,0,0};

printf("< 2*2 > Matrix Multip,Please input two matrix:

\n ");

int i,j,k;

 printf("\nplease input four number into matrix0:

\n");

        for(j=0;j<2;j++){

  for(k=0;k<2;k++){

   scanf("%d",&matrix0[j][k]); 

 }//for 2

}//for

 printf("\nplease input four number into matrix1:

\n");

        for(j=0;j<2;j++){

  for(k=0;k<2;k++){

   scanf("%d",&matrix1[j][k]); 

 }//for 2

}//for

 matrix[0][0]=(matrix0[0][0]*matrix1[0][0])+(matrix0[0][1]*matrix1[1][0]);

 matrix[0][1]=(matrix0[0][0]*matrix1[0][1])+(matrix0[0][1]*matrix1[1][1]);

 matrix[1][0]=(matrix0[1][0]*matrix1[0][0])+(matrix0[1][1]*matrix1[1][0]);

matrix[1][1]=(matrix0[1][0]*matrix1[0][1])+(matrix0[1][1]*matrix1[1][1]);

printf("\n the result is :

\n");

for(i=0;i<2;i++){

for(j=0;j<2;j++){

printf(" %d ",matrix[i][j]);

}

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);

void*thrd_funce(void*arg);

pthread_ttida,tidb,tidc,tidd,tide;

intmain(){

//创建线程tid,且线程函数由thrd_func指向,是thrd_func的入口点,即马上执行此线程函数

if(pthread_create(&tida,NULL,thrd_funca,NULL)!

=0){

printf("Createthreaderror!

\n");

exit

(1);

}

if(pthread_create(&tidb,NULL,thrd_funcb,NULL)!

=0){

printf("Createthreaderror!

\n");

exit

(1);

}

if(pthread_create(&tidc,NULL,thrd_funcc,NULL)!

=0){

printf("Createthreaderror!

\n");

exit

(1);

}

if(pthread_create(&tidd,NULL,thrd_funcd,NULL)!

=0){

printf("Createthreaderror!

\n");

exit

(1);

}

if(pthread_create(&tide,NULL,thrd_funce,NULL)!

=0){

printf("Createthreaderror!

\n");

exit

(1);

}

sleep(5);//race

printf("42group5people\n");

return0;

}

Void*thrd_funca(void*arg){

//printf("Iamnewthread!

\n");

inti,j;

chara[10]={"赵堃"};

printf("name:

");

for(i=0;i<3;i++){

for(j=0;j<10;j++)

printf("%c",a[j]);}//whypthread_self

printf("TID:

%u.\n",pthread_self());//whypthread_self

pthread_exit(NULL);//退出线程

//return((void*)0);

}

void*thrd_funcb(void*arg){

//printf("Iamnewthread!

\n");

inti,j;

chara[10]={"徐晓龙"};

printf("name:

");

for(i=0;i<3;i++){

for(j=0;j<10;j++)

printf("%c",a[j]);}//whypthread_self

printf("TID:

%u.\n",pthread_self());//whypthread_self

pthread_exit(NULL);//退出线程

//return((void*)0);

}

void*thrd_funcc(void*arg){

//printf("Iamnewthread!

\n");

inti,j;

chara[10]={"李昂"};

printf("name:

");

for(i=0;i<3;i++){

for(j=0;j<10;j++)

printf("%c",a[j]);}//whypthread_self

printf("TID:

%u.\n",pthread_self());//whypthread_self

pthread_exit(NULL);//退出线程

//return((void*)0);

}

void*thrd_funcd(void*arg){

//printf("Iamnewthread!

\n");

inti,j;

chara[10]={"宁新浩"};

printf("name:

");

for(i=0;i<3;i++){

for(j=0;j<10;j++)

printf("%c",a[j]);}//whypthread_self

printf("TID:

%u.\n",pthread_self());//whypthread_self

pthread_exit(NULL);//退出线程

//return((void*)0);

}

void*thrd_funce(void*arg){

//printf("Iamnewthread!

\n");

inti,j;

chara[10]={"袁芹"};

printf("name:

");

for(i=0;i<3;i++){

for(j=0;j<10;j++)

printf("%c",a[j]);}//whypthread_self

printf("TID:

%u.\n",pthread_self());//whypthread_self

pthread_exit(NULL);//退出线程

//return((void*)0);

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1