Linux实验报告.docx
《Linux实验报告.docx》由会员分享,可在线阅读,更多相关《Linux实验报告.docx(21页珍藏版)》请在冰点文库上搜索。
Linux实验报告
Linux程序设计
实验报告
姓名:
帆
班级:
计1242
学号:
121842284
专业:
计算机科学与技术
指导老师:
帼英
实验一Linux系统安装与启动(选做实验)
一、实验目的(通过实践及查阅资料完成如下实验)
1.掌握虚拟机的配置过程。
2.掌握Linux系统的安装过程和简单配置方法。
3.掌握与Linux相关的多操作系统的安装方法。
4.掌握Linux系统的启动、关闭步骤。
5.了解Linux文件系统和目录结构。
二、实验容
1.安装虚拟机软件(如VMware、Virtualbox)。
2.在虚拟机软件中安装Linux操作系统(如Fedora、Ubuntu、redhat等)。
3.配置Linux系统运行环境。
4.正确地启动、关闭系统。
三、实验步骤
1.安装虚拟机软件(VMwareWorkstation7.0)。
2.在虚拟机软件中新建Linux虚拟机2.1设置存大小(建议大于256MB)
2.2设置虚拟硬盘大小(建议大于8GB)
2.3设置虚拟光驱(虚拟方式,镜像文件)
2.4设置网络连接模式(建议采用桥接方式)
2.5设置共享目录(建议英文目录名)
1.在Linux虚拟机中安装Linux操作系统(fedora10)。
3.1选择安装界面
3.2检测安装截介质(建议跳过)
3.3安装过程中的语言、键盘选择
3.4磁盘分区(采用自动分区,总大小与2.2相匹配)
3.5引导程序选择(采用GRUB)
3.6注意事项(禁用SELinux)
2.通过相关命令实现对操作系统的登录、退出与关机
3.使用文件浏览器査看Linux操作系统目录结构
四、实验思考题
1.举例说明Linux操作系统不同目录下文件的主要作用。
2.列出你发现的Linux与Windows操作系统区别。
3.列出决定文本界面及图形界面显示的关键文件,并说明设置的关键。
4.列出你所能想到的虚拟机软件的用途。
实验结论:
实验二:
linux基本命令(必做实验)
一、实验目的、要求(请在操作后附实验结果)
1.熟悉Linux操作环境。
2.掌握Linux—般命令格式。
3.掌握有关文件和目录操作的常用命令。
4.掌握有关进程操作的常用命令。
二、实验容
1.熟练掌握登录和退出系统,创建,删除用户等命令(命令:
运行结果)。
2.熟悉date,cal,who,echo,clear,passwd,man等命令。
3.在用户主目录下对文件进行如下操作:
复制一个文件、显示文件容、查找指定容、排序、文件比较、文件删除。
4.对目录进行管理:
创建和删除子目录、改变和显示工作目录、列出文件权限、建立文件等。
1.显示系统中的进程信息。
三、实验步骤
1.登录进入系统,打开shell环境(终端)。
2.使用date,cal,who,echo,clear等命令,了解Linux命令格式。
3.利用man命令查看date,echo等命令的帮助说明。
4.目录操作
4.1在用户默认工作目录下新建目录testdirl(命令:
运行结果)。
4.2在用户目录下复制testdirl为testdir2(命令:
运行结果)。
4.3在用户目录下删除testdir2。
(命令:
运行结果)
5.文件操作
5.1进入用户默认工作目录。
5.2运行date>testl,然后运行cattest1,记录观察到的信息(命令:
运行结果)。
5.3再次运行date>testl,然后运行cattestl,记录观察到的信息(命令:
运行结果)。
5.4运行date»testl,然后运行cattestl,记录观察到的信息并说明原因(命令:
运行结果)。
5.5复制testl为test2。
5.6査看testl和test2的文件详细信息,记录并说明其异同。
5.7统计testl文件容的行数、字数。
5.8显示testl的容。
5.9建立testl的文件test3。
5.10复制testl到上一级目录。
5.11在用户目录下删除testl,删除testdirl。
四、实验思考题
1.如何显示当前工作目录的完整路径。
在Linux层次目录结构中,用户可以在被授权的任意目录下利用mkdir命令创建新目录,也可以利用cd命令从一个目录转换到另一个目录。
然而,没有提示符来告知用户目前处于哪一个目录中。
要想知道当前所处的目录,可以使用pwd命令,该命令显示整个路径名。
pwd 说明:
此命令显示出当前工作目录的绝对路径。
例:
$pwd/home/xu 显示的路径名为/home/xu,每个目录名都用“/”隔开,根目录以开头的“/”表示。
2.举例说明Linux命令的常用格式。
mkdir-p/srv/ftp/linux-10创建文件夹-p如果文件夹不存在自动创建
free命令free命令的功能是查看当前系统存的使用情况,它显示系统中剩余及已用的物理存和交换存,以及共享存和被核心使用的缓冲区。
3.举例说明如何使用Linux命令帮助(命令:
运行结果)。
实验结论:
实验三文件权限管理(必做实验)
一、实验目的
1.熟悉Linux操作环境。
2.掌握Linux—般命令格式。
3.理解Linux中文件所有者和权限的概念。
4.掌握有关权限操作的常用命令。
5.掌握文件/目录的打包和压缩命令。
二、实验容
1.2.1普通文件与目录权限的修改。
1.2.2改变文件属主。
1.2.3普通文件与目录的打包和压缩。
三、实验步骤
1.文件权限操作
1.1在用户默认工作目录下创建目录test03,进入test03目录,使用touch命令创建空文件filel。
1.2显示filel详细信息,记录文件的权限信息,所属用户和组。
1.3对filel设置权限,使其他用户可以对此文件进行写操作,并查看设置结果。
1.4取消同组用户对filel的读取权限,并査看设置结果。
1.5用数字形式来为filel设置权限,使所有者可读、可写、可执行;其他用户和所属组用户只有读和执行的权限,并查看设置结果。
1.6用数字形式更改filel权限,使所有者只能读取此文件,其他任何用户都没有权限,并査看设置结果。
1.7为其他用户添加写权限,并査看设置结果。
1.8回到上层目录,查看test03的权限。
1.9为其他用户添加对此目录的写权限,查看设置结果。
1.10査看并记录目录test03及其中文件的所属用户和组。
1.11把目录test03及其下的所有文件的所有者改成bin,所属组改成daemon,并査看设置结果。
1.12删除目录test03及其下的文件。
1.13设定umask为000($umask000),创建testdir目录,并査看其权限。
2.打包压缩命令操作
2.1将/etc目录拷贝SlJ用户默认工作目录下,重命名为etctest。
2.2用tar命令将etctest目录打包成etctest.tar.gz,查看etctest.tar.gz的权限,解压缩etctest.tar.gz
四、实验思考题
4.1列举ls命令不同选项的功能。
(1)ls:
显示所有非隐藏文件(按字典顺序排序)
(2)ls -a:
显示所有文件包括隐藏文件
(3)ls -l:
显示所有文件的详细信息
(4) 显示总数
4.2说明文件权限和文件所有者的含义。
-rw-r--r--是文件的权限。
Root是用户组。
4.3举例说明umask命令的功能。
umask设置了用户创建文件的默认权限,它与chmod的效果刚好相反,umask设置的是权限“补码”,而chmod设置的是文件权限码。
一般在/etc/profile、$[HOME]/.bash_profile或$[HOME]/.profile中设置umask值。
4.4说明后缀名为tar.gz和tar.bz2的文件的压缩和解压命令。
Linux下最常用的打包程序就是tar了,使用tar程序打出来的包我们常称为tar包,tar包文件的命令通常都是以.tar结尾的。
生成tar包后,就可以用其它的程序来进
行压缩了,所以首先就来讲讲tar命令的基本用法:
tar命令的选项有很多(用mantar可以查看到),但常用的就那么几个选项,下面
来举例说明一下:
#tar-cfall.tar*.jpg
这条命令是将所有.jpg的文件打成一个名为all.tar的包。
-c是表示产生新的包
,-f指定包的文件名。
#tar-rfall.tar*.gif
这条命令是将所有.gif的文件增加到all.tar的包里面去。
-r是表示增加文件的
意思。
#tar-ufall.tarlogo.gif
这条命令是更新原来tar包all.tar中logo.gif文件,-u是表示更新文件的意思。
#tar-tfall.tar
这条命令是列出all.tar包中所有文件,-t是列出文件的意思
#tar-xfall.tar
这条命令是解出all.tar包中所有文件,-x是解开的意思
以上就是tar的最基本的用法。
为了方便用户在打包解包的同时可以压缩或解压文件,tar提供了一种特殊的功能。
这就是tar可以在打包或解包的同时调用其它的压缩程序。
实验结论:
通过这个实验我了解了普通文件与目录权限的修改。
实验四用户和组的管理(必做实验)
一、实验目的
1.熟悉Linux操作环境。
2.掌握Linux—般命令格式。
3.熟悉命令行操作方式进行用户和用户组管理。
二、实验容
2.建立新用户账号权限测试。
3.为新用户建立账号和工作组,并进行相应配置。
4.以该用户身份登录,修改密码。
5.删除该用户。
三、实验步骤
1.创建用户(以zhangsan为例)
1.1创建一个新用户zhangsan。
1.2査看/etc/passwd文件的最后一行容,并记录。
1.3査看/etc/shadow文件的最后一行容,并记录。
1.4给用户zhangsan设置密码。
1.5查看/etc/shadow文件的最后一行容,记录并说明变化。
1.6使用zhangsan用户登录系统,测试能否登录成功。
2.创建用户(以user为例)
2.1使用1的步骤创建新用户user。
2.2更改zhangsan所属群组为root。
2.3査看/etc/passwd文件,记录zhangsan用户和user用户的属组情况。
2.4更改用户zhangsan的名为user。
2.5査看/etc/passwd文件的最后一行容,记录并说明变化。
2.6删除用户user。
3.组的管理(以stuff为例)
3.1创建一个新组,组名为stuff。
3.2査看/etc/group文件的最后一行容,并记录。
3.3创建一个新test,并将其起始组和附属组都设为stuff。
3.4査看/etc/group文件中的最后一行容,记录并说明变化。
3.5设置stuff组密码。
3.6在stuff组中删除用户test。
3.7查看/etc/group文件中的最后一行,记录并说明变化。
3.8删除会且stuff。
四、实验思考题
1.说明所属群组与所属附加群组的区别。
chgrp(changegroup)改变文件所属群组,
hown (change owner)改变文件所有者属性。
2.如普通用户遗失密码后要求恢复用户权限,说明root用户可能采取的方式。
1)在root账户下,打开/etc/shadow (不是passwd文件,因为密码实际上经过加密后放在了“影子口令”文件shadow中了。
passwd文件每个用户均可见,但是shadow只有root可以见)。
2)找到普通用户名cicikasa,然后删除第二个域即可,域之间用“:
”隔开的,如下user:
TdkakkkYUukkjkjk:
14672:
0:
99999:
7:
:
:
上述红色部分就是经过加密的密码,删除即可。
3)在普通用户下,输入passwd即可输入新密码。
3.如何指定不同用户的默认工作目录。
1)修改/etc/vsftpd/vsftpd.conf将
guest_username=virtual_user
user_config_dir=/etc/vsftpd_user
user_sub_token=$USER加进去
2)在/etc目录下手工建立vsftpd_user目录
3)在/etc/vsftpd_user目录下建立用户文件,用户文件名称=要登录的用户名。
例如:
FTP用户是test111那么就在/etc/vsftpd_user/下建立一个test111文件,文件容local_root=/home/test111/$USER
4)重启服务servicevsftpdrestart
实验五文本编辑器(选做实验)
一、实验目的
1.掌握Vi编辑器的进入与退出方法。
2.了解文本编辑器的三种模式。
3.熟练掌握使用vi编辑器进行编辑、选择及操作文本文件的命令。
二、实验容
1.进入和退出vi。
2.利用文件拷贝方式建立一个文件。
3.在该文件上移动光标位置。
4.对该文件容执行删除、修改、替换等操作。
三、实验步骤
1.在当前用户默认工作目录下新建一个名为“test02”的目录。
2.将文件“/etc/rsyslog.conf’复制到“test”目录下。
3.使用vi打开est’’目录下的rsyslog.conf〇
4.指出设定umask(类似于“umask0022”)的所在行号。
5.将光标移到该行,并复制该行容。
6.将该行容容粘贴至最后一行。
7.撤销第6步的动作。
8.光标移到“$FileOwnersyslog”,删除该行。
9.存盘但不退出。
10.将光标移到首行,插入模式下输入“Hello,thisisviworld!
”。
11.向下查找字符串“syslog”。
12.再向上査找字符串“TCP”。
13.强制退出vi,不存盘。
四、实验思考题
1.举例说明实验中使用的命令处于何种模式下?
2.说明在vi中如何实现字符串的查找,并实现查找结果的自动换行。
3.说明在vi中如何实现行号的显示与关闭。
实验六库文件的建立与引用(必做实验)
按照课本第一章,第7-11页,建立并引用库文件,写出实验过程及结果。
库函数介绍:
1.Linux系统调用,文件的描述符使用的是一个整数,库函数访问文件使用FILE类型的指针去指向描述文件;
2.库函数不随系统平台而变,即不管win还是Linux都适用;
库函数-读文件
size_tfread(void*ptr,size_tsize,size_tn,FILE*stream)
功能:
从stream指向的文件中读取n个字段,每个字段为size字节,并将读取的数据放入ptr所指向的字符数组中,返回实际已读取的字节数。
(读出来的数据量为size*n)
库函数-写文件
size_tfwrite(constvoid*ptr,size_tsize,size_tn,FILE*stream)
功能:
从缓冲区ptr所指向的数组中把n个字段写到stream指向的文件中,每个字段长为size个字节,返回实际写入的字段数。
库函数-创建和打开
FILE*fopen(constchar*filename,constchar*mode)
filename:
打开的文件名(包含路径,缺省为当前路径)
mode:
打开模式
实例代码
#include
#include
#include
#defineBUFFER_SIZE1024
/*程序入口*/
intmain(intargc,char**argv)
{
FILE*from_fd;
FILE*to_fd;7
/*判断入参*/
if(argc!
=3)
{
printf("Usage:
%sfromfiletofile\n",argv[0]);
}
longfile_len=0;
charbuffer[BUFFER_SIZE];
char*ptr;
/*打开源文件*/
if((from_fd=fopen(argv[1],"rb"))==NULL)
{
printf("Open%sError\n",argv[1]);
exit
(1);
}
/*创建目的文件*/
if((to_fd=fopen(argv[2],"wb"))==NULL)
{
printf("Open%sError\n",argv[2]);
exit
(1);
}
/*测得文件大小*/
fseek(from_fd,0L,SEEK_END);
file_len=ftell(from_fd);
fseek(from_fd,0L,SEEK_SET);
printf("formfilesizeis=%d\n",file_len);
/*进行文件拷贝*/
while(!
feof(from_fd))
{
fread(buffer,BUFFER_SIZE,1,from_fd);
if(BUFFER_SIZE>=file_len)
{
fwrite(buffer,file_len,1,to_fd);
}
else
{
fwrite(buffer,BUFFER_SIZE,1,to_fd);
file_len=file_len-BUFFER_SIZE;
}
bzero(buffer,BUFFER_SIZE);
}
fclose(from_fd);
fclose(to_fd);
exit(0);
}
结果及说明:
rootwl-MS-7673:
/home/wl/桌面/c++#g++file_lib_copy.cpp-ofile_lib_copy
file_lib_copy.cpp:
在函数‘intmain(int,char**)’中:
file_lib_copy.cpp:
43:
41:
警告:
格式‘%d’expectsargumentoftype‘int’,butargument2hastype‘longint’[-Wformat]
rootwl-MS-7673:
/home/wl/桌面/c++#./file_lib_copyfile_lib_copy.cpptest2.c
formfilesizeis=1030
rootwl-MS-7673:
/home/wl/桌面/c++#