Linux程序设计实验报告
1
《Linux程序设计》
实验报告
安徽工业大学计算机学院
2009年6月
2 实验一 Linux基本命令的使用
1、实验目的
学习和掌握Linux的基本命令。
2、实验内容和步骤
步骤1:以user_login用户身份并使用telnet登录Linux服务器,按照提示创建自己的账户和口令。
步骤 2:使用新创建的用户账户和口令登录Linux系统,察看登录后的界面。
步骤3:使用pwd命令察看当前的工作目录,然后用ls命令查看当前目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。
步骤4:在当前目录下建立一个名为test的新目录,然后将工作目录切换到test下,尝试将/etc目录下的文件passwd拷贝到该目录下(cp 源文件 目的目录)。察看当前目录下的passwd文件的属主和文件权限。 3
步骤5:尝试向当前目录下的passwd文件和/etc/passwd文件分别写入一些新内容(可使用echo “字符串” >>文件的命令),看看操作能否成功,如果不能成功,请说明原因。用cat命令浏览文件password的内容,用more命令进行浏览翻页操作,再用less命令浏览文件的内容。比较这几个命令的不同之处
步骤6:用ls命令查看test下文件的权限,用mv命令更改文件password的文件名为test.txt,尝试用chown和chgrp更改文件的属主为root、组为root,看看能否成功,不成功,请说明原因。尝试用chomd将文件权限为“-rw-------”。看看能否成功,不成功,请说明原因。 4
步骤7:用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。 (想一想有没有一条命令将目录及目录下的所有文件删除,写出这条命令)
步骤8:使用ps命令查看当前系统内的进程,并利用man命令获取ps命令的参数,写出获取当前终端进程执行情况的ps命令。 5 步骤9:使用df命令查看当前系统已安装的文件系统的空间使用情况,记录结果。______________________________________________________________________________________________________________________________________________________________
步骤10:使用du命令查看用户的工作目录占用了多少空间,记录结果。
步骤11:使用free命令查看内存资源的使用情况,记录结果。________________________________________________________________________________ 6 步骤12:使用man获取tar和gzip的帮助信息,尝试将test目录下的文件打包并压缩,然后到另外一目录tmp下解包,写出这几条命令。
步骤13:尝试执行“ls –l > tmp”,看看这条命令的执行会出现什么结果,解释一下这条命令。
解释:将ls –l输出的结果输出重定向到tmp文件中
步骤14:尝试执行find /usr/src -name *.c -print | xargs grep “#include”,看看这条命令的执行会出现什么结果,解释一下这条命令。 7 解释:匹配查找列表输出/usr/src下以.c结尾的文件中含有“#include”的内容。
步骤15:执行cal和date命令,说说这两条指令的用途。
cal:输出当月的日历,date:输出当前的时间。
步骤16:执行命令clear和logout,退出系统。(想一想有没有其他的方法,写出这种方法)
还可以用命令:exit
步骤17:执行命令shutdown,关闭系统。(想一想有没有更简单的命令,写出这条命令)
还可以用命令:init 0
3、实验结论
通过本次试验让我熟悉了linux系统下一些简单命令的用法,对系统有个初步的认识,为以后的学习垫下良好的基础,增强了自己对linux的浓厚的兴趣。 8 实验二 简单Shell程序设计
1、实验目的
(1) 学习和掌握vi编辑器的基本使用方法。
(2) 学习和掌握编写简单的shell程序。
2、实验内容和步骤
2.1 vi的使用
步骤1:以root用户身份登录进入Linux 系统。
步骤 2:启动Vi,切换到输入模式,输入一段英文:
This ia an exercise!
We use Vi to edit it.
Left,down,up,right
步骤3:尝试匹配其中的一串字符,写出这命令及执行结果。
步骤4:尝试替换其中的一串字符,写出这命令及执行结果。
步骤5:尝试复制/删除其中的一行或几行文本,写出命令及执行结果。
步骤6:尝试复制/删除其中的一个单词或几个字符,写出命令及执行结果。
步骤7:尝试使用鼠标复制文本,写出命令及执行结果。
步骤8:尝试存盘退出操作,写出命令。
可以用的命令 :wq 或:x
2.2 简单的shell程序
步骤1:使用Vi将程序清单2-1的程序输入。 9 步骤 2:尝试运行该程序,如果不能运行,原因是什么,怎样修改。
步骤3:执行程序,写出程序的执行结果。
步骤4:阅读程序,掌握shell函数的编写方法,补全函数file_run。
for i in `ls`
do
if test -x $i;then
echo $i
fi
done
步骤5:修改程序中的函数uers(),使得显示在线用户时不分行。(提示:可以使用循环,对每个在线用户分别处理。
echo "there are `who|wc -l` users online"
for i in "who are\n`who|awk '{print $1}'`" 10 do
echo -n $i
echo -n" "
done
3、实验结论
本次实验让我在实验一的基础上进一步了解linux下的一些常用命令,同时学习巩固了linux下的shell编程。
4、程序清单
清单2-1 menu
MYDATE=`date +%d/%m/%y`
THIS_HOST=`hostname -s`
USER=`whoami`
file_run()
{
echo "you must complete it"
}
uers()
{
echo "there are `who|wc -l` users online"
echo -e "who are\n`who|awk '{print $1}'`"
} 11
while :
do
tput clear
cat <
---------------------------------------------------------------------
User:$USER Host:$THIS_HOST Date:$MYDATE
---------------------------------------------------------------------
1 : List subdirectory in current directory
2 : List files in current directory which can run
3 : See who is on the system
H : Help screen
Q : Exit Menu
--------------------------------------------------------------------
aaa
echo -e -n "\tYour Choice [1,2,3,H,Q] >"
read CHOICE
case $CHOICE in
1) ls -l|awk '/^d/ {print $8}'
;;
2) file_run
;;
3) uers
;;
H|h)
cat <
This is the help screen,nothing here yet to help you!
aaa
;;
Q|q) exit 0
;;
*) echo -e "\t\007 unkown user response"
;;
esac
echo -e -n "\n\n\tHit the return key to continue"
read DUMMY
done
12 实验三 Linux下简单C程序设计与文件操作
1、实验目的
(1) 学习和掌握gcc等Linux的开发调试环境。
(2) 学习并掌握Linux的文件操作。
(3) 编写并实现实验步骤6要求的程序。
2、实验内容和步骤
步骤1:使用Vi将程序清单3-1和3-2的程序输入,并在当前目录下创建文件“file.in”和文件“file.out”,尽可能的使文件“file.in”大一些。
步骤 2:利用gcc分别编译这两个程序,写出编译命令和执行结果,如果不成功,尝试利用gdb调试。
Gcc –o list3_1 list3_1.c
Gcc –o list3_2 list3_2.c
步骤3:仔细观察这两个程序,比较标准C的文件操作和Linux的系统调用open、read、write等的使用区别。
答:一个是底层的系统调用,另一个是库函数调用,其效率略有差距,同时参数也不同。
步骤4:按照说明重新修改程序3-2,并使用time命令察看程序执行的时间效率上有何区别。
修改之前的系统时间: [root@localhost ~]# time ./ list3_2
real 0m18.791s
user 0m0.824s
sys 0m17.317s
修改之后的时间:___[root@localhost ~]# time ./list3_2
real 0m0.049s
user 0m0.000s
sys 0m0.036s
步骤5:输入、编译并运行程序3-3和3-4,写出执行结果,并比较他们fseek和lseek在使用方法上的异同
Linux实验3
- 1 - 福建农林大学实验报告
系: 专业: 年级:
姓名: 学号: 实验室号__ 计算机号
实验时间: 指导教师签字: 成绩:
实验三 用户管理
一、 实验目的和要求
1) 掌握在Linux系统下利用命令方式实现用户和组的管理;
2) 掌握批量创建用户的方法。
二、 实验内容和原理
1. 用户的管理
创建一个新用户user01,设置其主目录为/home/user01。
查看/etc/passwd文件的最后一行,看看是如何记录的。
查看文件/etc/shadow文件的最后一行,看看是如何记录的。
给用户user01设置密码。
再次查看文件/etc/shadow文件的最后一行,看看有什么变化。
使用user01用户登录系统,看能否登录成功。
锁定用户user01。
查看文件/etc/shadow文件的最后一行,看看有什么变化。
再次使用user01用户登录系统,看能否登录成功。
解除对用户user01的锁定
更改用户user01的帐户名为user02。
查看/etc/passwd文件的最后一行,看看有什么变化。
删除用户user02。
2. 组的管理
创建一个新组,stuff。
查看/etc/group文件的最后一行,看看是如何设置的。
Linux操作系统实验总结分析报告
Linux操作系统实验总结分析报告
从系统的⾓度分析影响程序执⾏性能的因素
1.Linux系统概念模型
从全局的⾓度来看,Linux系统分为内核空间和⽤户空间,但毫⽆疑问内核空间是Linux系统的核⼼,因为内核负责管理整个系统的进程、内存、设备驱动程序、⽂件,决定着系
统的性能和稳定性。于是从这个⾓度我构建的Linux系统的概念模型如下图所⽰:
此模型将Linux系统主要划分为四个模块:内存管理、进程管理、设备驱动程序、⽂件系统。这四个部分也是⼀个操作系统最基本也是最重要的功能。
2.概念模型解析
2.1 内存管理
Linux系统采⽤虚拟内存管理技术,使得每个进程都有各⾃互不⼲涉的进程地址空间。该空间是块⼤⼩为4G的线性虚拟空间,⽤户所看到和接触到的都是该虚拟地址,⽆法看到
实际的物理内存地址。利⽤这种虚拟地址不但能起到保护操作系统的效果(⽤户不能直接访问物理内存),⽽且更重要的是,⽤户程序可使⽤⽐实际物理内存更⼤的地址空间。
内存管理主要有分为如下⼏个功能:地址映射、虚拟地址管理、物理内存管理、内核空间管理、页⾯换⼊换出策略和⽤户空间内存管理,这些模块的架构图如下所⽰:
2.2 进程管理
进程管理是Linux系统⾮常重要的⼀部分,进程管理虽然不像内存管理、⽂件系统等模块那样复杂,但是它与其他⼏个模块的联系是⾮常紧密的。进程管理主要包括进程的创建、
切换、撤销和进程调度。
2.2.1 进程的创建、切换、撤销
进程的创建:在Linux编程中,⼀般采⽤fork()函数来创建新的进程,当然,那是在⽤户空间的函数,它会调⽤内核中的clone()系统调⽤,由clone()函数继续调⽤do_fork()完成进
程的创建。
整个进程创建过程可能涉及到如下函数:
fork()/vfork()/_clone----------->clone()--------->do_fork()---------->copy_process()
进程的切换:进程切换⼜称为任务切换、上下⽂切换。它是这样⼀种⾏为,为了控制进程的执⾏,内核挂起当前在CPU上运⾏的进程,并恢复以前挂起的某个进程的执⾏。跟函
Linux实验报告(dns配置)
1 Linux期中实验报告
——DNS的配置
实验运行环境:Red Hat Linux9/WindowsXP/Win7
实验前准备:bind-9.2.1-16.i386.rpm
bind-utils-9.2.1-16.i386.rpm
redhat-config-bind-1.9.0-13.noarch.rpm
caching-nameserver-7.2-7.noarch.rpm
bind-chroot-9.2.4-2.i386.rpm(可选)
ftp-0.17-17.i386.rpm
httpd-2.0.40-21.i386.rpm
无线路由器一个
实验的整体框图
一、实验目的
1. 认识DNS、FTP、WEB、SMB服务器的主要功能及其工作原理;
2. 学习DNS、FTP、WEB、SMB服务器的安装和配置;
3. 学习如何组建一个局域网,使局域网中的所有的计算机的Windows系统和Linux系统可以互相访问;
4. 掌握对DNS、FTP、WEB、SMB服务器的调试方法及检验问题、解决问题的方法
二、 实验的主要内容
1. 在计算机上配置DNS、FTP、WEB、SMB服务器。
2. 单台计算机下的DNS、FTP、WEB、SMB服务器的调试。
3. 组建一个局域网,实现局域网中所有计算机Windows系统和Linux系统的互相访问(Windows系统与Windows系统、Windows系统与Linux系统、Linux系统与Linux系统)。
4. 在多台电脑之间配置主域名服务器,辅助域名服务器,实现Linux系统之间的DNS的正反向解析调试。
5. 在多台电脑之间实现Windows系统对Linux系统的DNS的正反向解析调试。
6. 在局域网中实现FTP、WEB、SMB服务器在Windows系统和Linux系统之间的相互访问和测试。 wei peng pangzi zhang WLAN
linux实验报告
西安航空职业技术学院 课程设计用纸
- 1 - 西安航空职业技术学院
课 程
课 程 设 计 说 明 书
设计题目:
专 业:
班级学号:
姓 名:
指导教师:
年 月 日
教务处印制
西安航空职业技术学院 课程设计用纸
- 2 - 西安航空职业技术学院
课 程 设 计 任 务 书
课题名称:
设计内容:
技术条件或要求:
指导教师(签名): 教研室主任(签名):
开题日期: 年 月 12日 完成日期: 年 月 23 日
西安航空职业技术学院 课程设计用纸
- 3 - [摘要]随着Internet的日益普及,在网络上学会配置网络服务器,有着非常重要的意义。综合网络服务器基于LINUX操作系统上,进行服务器与客户端之间的连接,实现服务器为客户端提供服务。其实训内容包括linux服务器搭建与测试:dhcp(主机IP的动态获取)服务器搭建与应用、dns(域名解析)服务器搭建与应用、ftp(能够实现网络文件传输的上传和下载)服务器搭建与应用、www(能够实现基于域名的虚拟机访问)服务器搭建与应用、网络访问等等。综合网络服务器的功能强大,操作简单,扩展性强,稳定性高;方便不同操作系统平台之间的移植;网站最大限度地实现易维护性和易操作性。Linux是一套免费使用和自由传播的操作系统,以其稳定性和灵活性而著称。完善的内置网络是Linux的一大特点。Linux为用户提供了完善的、强大的网络功能。作为一种网络操作系统,它在网络服务器上得到了广泛的应用。
嵌入式Linux系统开发教程实验报告
.
.
kszl
嵌入式实验报告
:
学号:
学院:
日期:
.
.
kszl 实验一 熟悉嵌入式系统开发环境
一、实验目的
熟悉 Linux 开发环境,学会基于S3C2410 的Linux 开发环境的配置和使用。使用Linux的armv4l-unknown-linux-gcc 编译,使用基于NFS 方式的下载调试,了解嵌入式开发的基本过程。
二、实验容
本次实验使用 Redhat Linux 9.0 操作系统环境,安装ARM-Linux 的开发库及编译器。创建一个新目录,并在其中编写hello.c 和Makefile 文件。学习在Linux 下的编程和编译过程,以及ARM 开发板的使用和开发环境的设置。下载已经编译好的文件到目标开发板上运行。
三、实验设备及工具
硬件::UP-TECH S2410/P270 DVP 嵌入式实验平台、PC 机Pentium 500 以上, 硬盘10G 以上。
软件:PC 机操作系统REDHAT LINUX 9.0+超级终端(或X-shell)+AMR-LINUX 开发环境。
四、实验步骤
1、建立工作目录
[rootlocalhost root]# mkdir hello
[rootlocalhost root]# cd hello
2、编写程序源代码
我们可以是用下面的命令来编写hello.c的源代码,进入hello目录使用vi命令来编辑代码:
[rootlocalhost hello]# vi hello.c
linux实验五、Shell脚本程序编制实验
南京晓庄学院 数信学院Linux 实验五
实验五Shell脚本程序编制实验
编写一个Shell命令脚本程序的基本步骤如下:
(1)编辑包含用户命令脚本程序的文本文件
(2)添加Shell定义语句,使Linux操作系统可以知道用户使用哪一种Shell
(3)编写Shell命令脚本程序内容
(4)保存脚本程序并退出。用“chmod +x ”命令改变该脚本程序的存取权限和执行权限,使其可以被适当的用户使用。
(5)运用该命令脚本程序以进行测试
(6)如有必要,可进行程序纠错。
(7)如有必要,可把完整的命令脚本程序移动到相应位置
(8)如有必要,可在path语句中加上此脚本的路径
练习:编写书本P107welcome Shell脚本程序
运行脚本程序的三种方法:
a. bash 脚本文件名
b. bash < 脚本文件名
c. chmod u(或g,o,a)+x 脚本文件名 #为脚本添加执行权限
Shell定义的环境变量 shell在开始执行时就已经定义了一些和系统的工作环境有关的变量,这些变量用户还可以重新定义,常用的shell环境变量有:
HOME:用于保存注册目录的完全路径名。
PATH:用于保存用冒号分隔的目录路径名,shell将按PATH变量中给出的顺序搜索这些目录,找到的第一个与命令名称一致的可执行文件将被执行。
TERM:终端的类型。
UID:当前用户的标识符,取值是由数字构成的字符串。
PWD:当前工作目录的绝对路径名,该变量的取值随cd命令的使用而变化。
PS1:主提示符,在特权用户下,缺省的主提示符是“#”,在普通用户下,缺省的主提示符是“$”。
PS2:在shell接收用户输入命令的过程中,如果用户在输入行的末尾输入“\”然后回车,或者当用户按回车键时shell判断出用户输入的命令没有结束时,显示这个辅助提示符,提示用户继续输入命令的其余部分,缺省的辅助提示符是“>”。
Linux 实验报告二文件和目录管理
第 1页 共 12页 Linux操作系统报告单
专业:计算机科学与技术
学号:
姓名:
名称:文件和目录管理
任课教师:
班级:
完成日期:
成绩:
一、实验名称及目的:
实验名称:文件和目录管理
实验目的:1、了解linux系统的文件和目录结构
2、熟悉linux系统的文件和目录管理的方式和命令
3、能够熟练的使用文件和目录管理命令
二、实验内容及要求:
1.查看操作系统的根目录下,有哪些目录
2.文件操作
第 2页 共 12页 (1)查看文件(可以是二进制的)内容 cat
执行格式:cat filename 或 more filename 或 cat
filename|more 例: cat file1 以连续显示方式,查看文件 file1 的内容 more file1
或 cat file1|more 以分页方式查看文件的内容(2)删除文件
rm
执行格式: rm filename 例: rm file? rm f*
(3)复制文件 cp
执行格式: cp [r] source destination 例:cp file1 file2将 file1 复制成 file2
cp file1 dir1 将file1复制到目录 dir1 cp /tmp/file1
将file1复制到当前目录
cp /tmp/file1 file2 将file1复制到当前目录名为 file2 cp
–r dir1 dir2 (recursive copy)复制整个目录(4)移动或更改文件、目录名称 mv
执行格式: mv source destination 例:
mv file1 file2 将文件 file1,更名为 file2
linux系统使用实验报告
linux系统使用实验报告
Linux 系统使用实验报告
一、实验目的
本次实验旨在深入了解和熟悉 Linux 操作系统的基本操作、命令行使用以及系统配置,掌握常见的文件管理、进程管理、用户权限管理等功能,提高对 Linux 系统的实际应用能力。
二、实验环境
1、 操作系统:Ubuntu 2004 LTS
2、 实验工具:终端模拟器(Terminal)
三、实验内容与步骤
(一)系统登录与基本命令
1、 启动计算机,选择 Ubuntu 操作系统,输入用户名和密码登录系统。
2、 打开终端模拟器,熟悉常用的基本命令,如 `ls` (列出当前目录下的文件和文件夹)、`cd` (切换目录)、`mkdir` (创建新目录)、`rmdir` (删除空目录)等。
(二)文件管理 1、 在用户主目录下创建一个名为 `experiment` 的文件夹,使用 `mkdir experiment` 命令。
2、 进入该文件夹,使用 `cd experiment` 命令。
3、 在 `experiment` 文件夹中创建一个文本文件 `filetxt` ,使用 `touch filetxt` 命令。
4、 使用 `vi` 或 `nano` 编辑器打开 `filetxt` 文件,输入一些文本内容,并保存退出。
5、 查看文件的内容,使用 `cat filetxt` 命令。
6、 复制文件,使用 `cp filetxt file_copytxt` 命令。
7、 移动文件,使用 `mv filetxt/` 命令将文件移动到上级目录。
8、 删除文件,使用 `rm file_copytxt` 命令。
(三)进程管理
1、 运行一个后台进程,例如 `ping &` ,然后使用 `jobs` 命令查看后台进程。
2、 将后台进程切换到前台,使用 `fg %1` (其中 %1 为后台进程的编号)命令。
3、 终止进程,使用 `Ctrl + C` 组合键终止正在运行的进程。
linux系统实验报告
。
-可编辑修改- 实 验 报 告
系 别 班 级 学 号 姓 名 时间 地点
计科 Summer
课程名称 Linux操作系统 实验名称 常用命令使用3
2.实 验 过 程
一.实验目的
掌握Linux环境下命令熟练使用。
二.实验设备
虚拟机中ubuntu操作系统中的终端。
三.实验内容
1. 切换到上级目录,然后显示其绝对路径,ls命令显示所有文件;
2. 使用命令新建文件file1,使用vi编辑器编写、保存关闭,使用命令查看其内容,之后重命名为file2,然后将file2删除;
3. 在用户luchunji主目录下创建一个目录mydir 复制文件/etc/init到mydir目录下在mydir目录下创建文件mydoc 删除mydir目录 ;
4. 统计文件/etc/inittab的字符数和行数;
5. 用cat、more、less、head、tail查看文件/etc/init 统计文件/etc/init的字符数和行数,并记录;
6. 将/etc/fstab文件复制到用户luchunji的主目录下,用ls –l查看主目录下的fstab的详细信息,并记录 ;
7. 用ln命令为fstab 创建符号连接文件fstabsoft,用ls –l查看文件fstab和fstabsoft信息,并记录;.
8. 用ln命令为fstab 创建硬链接文件fstabhard,用ls –l查看文件fstab和fstabhard信息,并记录;
9. 使用命令创建一个新的用户。
。
-可编辑修改- 四、实验结果(截图)
输入touch file1创建文件,然后输入vi file1 进入
按ESC跳到命令模式然后输入:wq
。
-可编辑修改-
下面用kali 环境写的。
。
-可编辑修改-
。
-可编辑修改-
。
-可编辑修改-
五、实验总结
东北大学操作系统实验之Linux及进程状态
操作系统实验报告一
1 实验一 进程状态转换及其PCB的变化
一、实验目的:
自行编制模拟程序,通过形象化的状态显示,使学生理解进程的概念、进程之间的状态转换及其所带来的PCB内容 、组织的变化,理解进程与其PCB间的一一对应关系。
二、实验内容及要求:
(1)、 设计并实现一个模拟进程状态转换及其相应PCB内容、组织结构变化的程序。
(2)、 独立编写、调试程序。进程的数目、进程的状态模型(三状态、五状态、七状态或其它)以及PCB的组织形式可自行选择。
(3)、 合理设计与进程PCB相对应的数据结构。PCB的内容要涵盖进程的基本信息、控制信息、资源需求及现场信息。
(4)、 设计出可视性较好的界面,应能反映出进程状态的变化引起的对应PCB内容、组织结构的变化。
(5)、 代码书写要规范,要适当地加入注释。
(6)、 鼓励在实验中加入新的观点或想法,并加以实现。
(7)、 认真进行预习,完成预习报告。
(8)、 实验完成后,要认真总结,完成实验报告。
五状态模型:
三、主要数据结构:
struct Run_type //运行态进程
{
char name;
int state;
int needtime;
int priority;
};
struct Ready_type //就绪态进程
{
2 char name;
int needtime;
int priority;
};
struct Blocked_type //阻塞态进程
{
char name;
int needtime;
int priority;
};
四、程序源代码:
#include
#include
#include
int i=0; int j=0;
struct Run_type{
char name;
int state;
int needtime;
