linu实验报告.docx
《linu实验报告.docx》由会员分享,可在线阅读,更多相关《linu实验报告.docx(14页珍藏版)》请在冰豆网上搜索。
linu实验报告
Linux程序设计
实验报告
姓名:
杨帆
班级:
计1242
学号:
专业:
计算机科学与技术
指导老师:
赵帼英
实验一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);
}
结果及说明:
root@wl-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]
root@wl-MS-7673:
/home/wl/桌面/c++#./file_lib_copyfile_lib_copy.cpptest2.c
formfilesizeis=1030
root@wl-MS-7673:
/home/wl/桌面/c++#