Linux大作业 2文档格式.docx

上传人:b****2 文档编号:3181664 上传时间:2023-05-01 格式:DOCX 页数:20 大小:275.28KB
下载 相关 举报
Linux大作业 2文档格式.docx_第1页
第1页 / 共20页
Linux大作业 2文档格式.docx_第2页
第2页 / 共20页
Linux大作业 2文档格式.docx_第3页
第3页 / 共20页
Linux大作业 2文档格式.docx_第4页
第4页 / 共20页
Linux大作业 2文档格式.docx_第5页
第5页 / 共20页
Linux大作业 2文档格式.docx_第6页
第6页 / 共20页
Linux大作业 2文档格式.docx_第7页
第7页 / 共20页
Linux大作业 2文档格式.docx_第8页
第8页 / 共20页
Linux大作业 2文档格式.docx_第9页
第9页 / 共20页
Linux大作业 2文档格式.docx_第10页
第10页 / 共20页
Linux大作业 2文档格式.docx_第11页
第11页 / 共20页
Linux大作业 2文档格式.docx_第12页
第12页 / 共20页
Linux大作业 2文档格式.docx_第13页
第13页 / 共20页
Linux大作业 2文档格式.docx_第14页
第14页 / 共20页
Linux大作业 2文档格式.docx_第15页
第15页 / 共20页
Linux大作业 2文档格式.docx_第16页
第16页 / 共20页
Linux大作业 2文档格式.docx_第17页
第17页 / 共20页
Linux大作业 2文档格式.docx_第18页
第18页 / 共20页
Linux大作业 2文档格式.docx_第19页
第19页 / 共20页
Linux大作业 2文档格式.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

Linux大作业 2文档格式.docx

《Linux大作业 2文档格式.docx》由会员分享,可在线阅读,更多相关《Linux大作业 2文档格式.docx(20页珍藏版)》请在冰点文库上搜索。

Linux大作业 2文档格式.docx

;

//输入y或者yes返回

n|no)return1;

//输入n或者no返回x的值

*) 

echo“Answeryesorno”;

//如果输入的不是以上几项就提示

esac 

done

}echo“Originalparametersare$*”//输出ifyes_or_no

then 

echo“Hi$1,nicename”//输出经过判断的名字,是你的名字

else 

echo“Nevermind”//不是你的名字

fiexit0//退出

1.2U盘的卸载与挂载

/bin/sh

#mountusb.sh

quit()

{

clear//退出程序函数

echo“*******************************************************************”

echo“***thankyoutouse,Goodbye!

****”

exit0

}

mountusb()

{//加载U盘函数

clear

mkdir/mnt/usb//在/mnt下创建usb目录

/sbin/fdisk–l|grep/dev/sd//查看U盘设备名称

echo–e“PleaseEnterthedevicenameofusbasshownabove:

\c”

readPARAMETERmount/dev/$PARAMETER/mnt/usb

}

umountusb()//卸载U盘函数

ls-la/mnt/usb

display()//显示U盘信息函数

umount/mnt/usb

cpdisktousb()//拷贝硬盘文件到U盘函数

echo–e“PleaseEnterthefilenametobeCopide(underCurrentdirectory):

\c”

readFILE

echo“Copying,pleasewait!

...”

cp$FILE/mnt/usb

cpusbtodisk()//拷贝U盘函数到硬盘文件

echo-e“PleaseEnterthefilenametobeCopideinUSB:

echo“Copying,Pleasewait!

cp/mnt/usb/$FILE.//点(.)表示当前路径

whiletrue

do

echo“=====================================================================”

echo“***LINUXUSBMANAGEPROGRAM***”

echo“1-MOUNTUSB”

echo“2-UNMOUNTUSB”

echo“3-DISPLAYUSBINFORMATION”

echo“4-COPYFILEINDISKTOUSB”

echo“5-COPYFILEINUSBTODISK”

echo“0-EXIT”

echo“=====================================================================”

echo–e“PleaseEnteraChoice(0-5):

readCHOICE//读取输入数据

case$CHOICEin//case条件跳转

1)mountusb;

2)unmountusb;

3)display;

4)cpdisktousb;

5)cpusbtodisk;

0)quit;

*)echo“InvalidChoice!

CorrentChoiceis(0-5)”

sleep4

clear;

esac

done

二、Linux操作系统配置实例

 

查阅资料结合实际使用情况,写出Linux操作系统使用中的一个配置的详细过程;

具体配置目标不限(自选)。

2.1NFS服务配置

2.1.1服务器端

(1)查看ip地址为192.168.1.103。

(2)先查找一下系统是否安装了nfs的软件包,使用rpm-qa来查看。

rpm–qa|grepnfs

(3)编辑/etc/exports文件来设置服务器端的共享目录(此处共享/shareA目录)

vi/etc/exports输入如下内容:

/shareA192.168.1.103(rw,no_root_squash)*(ro)

表示允许192.168.1.103主机读写,

其他所有的主机都可以访问此目录,权限是只读。

no_root_squash:

不将root用户及其所属的用户组映射为匿名用户和用户组,默认选项是root_squash,将root用户及其所属的用户组映射为匿名用户和用户组。

(4)启动NFS服务,使用servicenfsstart命令

2.1.2客户端

(1)使用showmount–e192.168.1.200命令来查看nfs服务器上共享的目录

如果出现如下情况

则需关掉服务端的防火网

然后在客户端重新输入命令

(2)使用mount命令讲nfs服务器上共享的目录挂接到本地的Linux计算机上

如:

mount192.168.1.200:

/shareA/tmp/nfs将192.168.1.200计算机上共享的/shareA目录挂接过来,挂接到自己的计算机上,接下来我们就可以像使用自己的硬盘一样来使用对方的共享目录

(3)使用mount命令来查看我们的挂接目录

Mount

(4)切换到挂载目录下,查看NFS服务器共享目录的内容。

cd/tmp/nfs

ls

mkdirbb

验证客户端是否可写NFS服务器导出的目录

(5)如果想解除挂接,我们可以使用umount命令

umount/tmp/nfs

2.2Samba服务配置

2.2.1Samba服务器配置

(1)配置以太网接口

设置网卡IP地址为192.168.1.200。

(2)Samba服务器的配置文件,vi/etc/samba/smb.conf

workgroup=MYGROUP

serverstring=SambaServer

security=share(只需修改此句)

说明:

上面的security是为Samba服务器设置安全等级的,选项的后面有几个等级如:

Share:

若采用此等级,用户不需要帐号和密码即可登录Samba服务器

User:

这是Samba服务器默认的安全等级,由Samba服务器检查帐号和密码

Server:

在此等级下,检查帐号和密码的工作可指定另一台WindowsNT/2000/XP或Samba服务器负责

Domain:

在此等级下,需要指定一台WindowsNT/2000/XP服务器,以验证用户所输入的帐号和密码

(3)在====ShareDefinitions====================的提示目录下可以设置共享目录,在配置文件最后添加如下内容:

[share1]

comment=stuff

path=/var/samba/share

public=yes

writable=yes

(4)重启Samba服务:

servicesmbrestart

(5)创建/var/samba/share,并设置权限,使所有用户都可访问。

mkdir–p/var/samba/share

chmod777/var/samba/share

2.2.2配置客户端,测试Samba服务器

(1)在Windows网络连接中选择VMnet1,设置ip地址为192.168.1.100。

检查客户端和linux服务器是否能ping通。

(2)打开网上邻居>

整个网络>

MicrosoftWindows网络,此时可以看到有两个工作组,Mygroup(我们刚才建的)和Workgroup,双击Mygroup,看到Linux计算机,双击它,查看共享目录。

验证是否可读写目录。

第二种方法:

选择[开始]菜单中的[运行],输入:

\\192.168.1.200\share1

2.2.3配置Samba服务器(需要口令)

前两个步骤如上例

(1)vi/etc/samba/smb.conf在配置文件中修改security=user

(2)在======ShareDefinitions=============的提示目录下可以设置共享目录,在配置文件最后添加如下内容:

[fredsdir]

comment=fred’sservice

path=/var/samba/fred

validusers=fred

public=no

(3)设置Samba密码文件,可以在主配置文件中看到Samba服务器所指定的密码文件/etc/samba/smbpasswd,它与Linux计算机的密码文件不同,他自己有自己的密码文件。

(4)此时可以为smbpasswd文件中的用户创建Samba口令,若无fred用户,需先创建用户。

(输入两条命令:

useraddfredpasswdfred)

给上面的fred用户设置口令,使用:

smbpasswd–afred命令(此时用户的口令可以和系统口令不同)

(5)创建共享目录并更改目录属主。

mkdir/var/samba/fred

chownfred.fred/var/samba/fred

(6)重启Samba服务:

(7)下面使用Windows计算机来测试一下,打开网上邻居>

MicrosoftWindows网络,此时可以看到有两个工作组,Mygroup(我们刚才建的)和Workgroup,双击Mygroup,看到Linux计算机.

(8)双击它,此时系统提示输入用户名和密码,输入刚才的用户名fred,密码123456。

(9)单击确定,发现共享目录有一个叫做fredsdir的文件夹。

\\192.168.1.200\fredsdir

2.2.4为一个组配置Samba共享

基本的实验步骤如下:

groupaddstaff

useradd–Gstaffuser1

passwduser1

useradd–Gstaffuser2

passwduser2

smbpasswd–auser1

smbpasswd–auser2

mkdir/var/samba/staff

chownstaff.staff/var/samba/staff

chmod770/var/samba/staff

vi/etc/samba/smb.conf

修改security=user

在配置文件最后添加如下内容:

[staffdir]

comment=staff’sservice

path=/var/samba/staff

writable=yes

writelist=@staff读写权限的用户或组

然后重启服务,挂载NFS导出的目录,测试user1和user2是否可读写,参考任务一和二。

2.2.5关于Samba服务器的其它命令

(1)可以使用其它命令如:

smbclient–L//IP地址/共享名–U用户名来访问windows或linux提供的共享,如:

使用命令查看并访问共享,smbclient–L//192.168.1.200/fredsdir–Ufred

(2)可以使用smbstatus命令查看Samba服务器的资源使用情况

(3)可以输入testparm来检查smb.conf配置文件的正确性

要求:

编写Linux下的一个应用程序。

开发语言和工具不限;

给出源代码和运行结果。

关键代码部分要给出注释。

3.1计算学生的总成绩和平均成绩

3.1.1功能

要求输入学生数和成绩,然后求出这几个学生的总成绩和平均成绩。

3.1.2代码

/*main.c程序:

计算学生的总成绩和平均成绩*/

#include<

stdio.h>

/*文件预处理,包含标准输入输出库*/

floatfun_sum(intvar[],intnum);

/*自定义函数声明,也可以把声明放在main中*/

floatfun_avg(intvar[],intnum);

intmain()

{

intn,i;

floataverage,sum;

printf(“请输入需要统计的学生数:

”);

scanf(“%d”,&

n);

intarray[n];

for(i=0;

i<

n;

i++)

printf(“请输入第%d个学生的成绩:

”,i+1);

array[i]);

}

sum=fun_sum(array,n);

printf(“输入的%d个学生的总成绩是:

%6.2f\n”,n,num);

average=fun_avg(array,n);

printf(“输入的%d个学生的平均成绩是:

%6.2f\n”,n,average);

floatfun_sum(intvar[],intnum)

floatavrg=0.0;

inti;

num;

avrg+=var[i];

return(avrg);

floatfun_avg(intvar[],intnum)

avrg/=num;

四、Linux内核源码解读

任选Linux内核源码,写出该模块运行过程;

在每行内核源码后注释说明;

解读源码不少于三十行。

4.1sys.c程序

4.1.1功能描述

  sys.c程序主要包含有很多系统调用功能的实现函数。

其中,若返回值为-ENOSYS,则表示本版的linux还没有实现该功能,可以参考目前的代码来了解它们的实现方法。

所有系统调用的功能说明请参见头文件nclude/linux/sys.h。

4.1.2代码注释

列表4.1linux/kernel/sys.c程序

1/*

2*linux/kernel/sys.c

3*

4*(C)1991LinusTorvalds

5*/

6

7#include<

errno.h>

//错误号头文件。

包含系统中各种出错号。

(Linus从minix中引进的)。

9#include<

linux/sched.h>

//调度程序头文件,定义了任务结构task_struct、初始任务0的数据,还有一些有关描述符参数设置和获取的嵌入式汇编函数宏语句。

10#include<

linux/tty.h>

//tty头文件,定义了有关tty_io,串行通信方面的参数、常数。

11#include<

linux/kernel.h>

//内核头文件。

含有一些内核常用函数的原形定义。

12#include<

asm/segment.h>

//段操作头文件定义了有关段寄存器操作的嵌入式汇编函数。

13#include<

sys/times.h>

//定义了进程中运行时间的结构tms以及times()函数原型。

14#include<

sys/utsname.h>

//系统名称结构头文件。

15//返回日期和时间。

16intsys_ftime()

17{

18return-ENOSYS;

19}

20

21intsys_break()

22{

23return-ENOSYS;

24}

25//用于当前进程对子进程进行调试(degugging)。

26intsys_ptrace()

27{

28return-ENOSYS;

29}

4.2sys.h文件

  4.2.1功能描述

sys.h头文件列出了内核中所有系统调用函数的原型,以及系统调用函数指针表。

  4.2.2代码注释

列表4.2linux/include/linux/sys.h文件

1externintsys_setup();

//系统启动初始化设置函数。

(kernel/blk_drv/hd.c,71)

2externintsys_exit();

//程序退出。

(kernel/exit.c,137)

3externintsys_fork();

//创建进程。

(kernel/system_call.s,208)

4externintsys_read();

//读文件。

(fs/read_write.c,55)

5externintsys_write();

//写文件。

(fs/read_write.c,83)

6externintsys_open();

//打开文件。

(fs/open.c,138)

7externintsys_close();

//关闭文件。

(fs/open.c,192)

8externintsys_waitpid();

//等待进程终止。

(kernel/exit.c,142)

9externintsys_creat();

//创建文件。

(fs/open.c,187)

10externintsys_link();

//创建一个文件的硬连接。

(fs/namei.c,721)

11externintsys_unlink();

//删除一个文件名(或删除文件)。

(fs/namei.c,663)

12externintsys_execve();

//执行程序。

(kernel/system_call.s,200)

13externintsys_chdir();

//更改当前目录。

(fs/open.c,75)

14externintsys_time();

//取当前时间。

(kernel/sys.c,102)

15externintsys_mknod();

//建立块/字符特殊文件。

(fs/namei.c,412)

16externintsys_chmod();

//修改文件属性。

(fs/open.c,105)

17externintsys_chown();

//修改文件宿主和所属组。

(fs/open.c,121)

18externintsys_break();

//(-kernel/sys.c,21)

19externintsys_stat();

//使用路径名取文件的状态信息。

(fs/stat.c,36)

20externintsys_lseek();

//重新定位读/写文件偏移。

(fs/read_write.c,25)

21externintsys_getpid();

//取进程id。

(kernel/sched.c,348)

22externintsys_mount();

//安装文件系统。

(fs/super.c,200)

23externintsys_umount();

//卸载文件系统。

(fs/super.c,167)

24externintsys_setuid();

//设置进程用户id。

(kernel/sys.c,143)

25externintsys_getuid();

//取进程用户id。

(kernel/sched.c,358)

26externintsys_stime();

//设置系统时间日期。

(-kernel/sys.c,148)

27externintsys_ptrace();

//程序调试。

(-kernel/sys.c,26)

28externintsys_alarm();

//设置报警。

(kernel/sched.c,338)

29externintsys_fstat();

//使用文件句柄取文件的状态信息。

(fs/stat.c,47)

30externintsys_paus

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

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2