天津理工大学《Linux操作系统》实验三
linux实验报告64534

Linux技术上机实验指导实验一Linux系统安装与简单配置一、实验目的1.掌握Linux系统安装的分区准备。
2.掌握Linux系统的安装步骤。
3.掌握Linux系统分区的挂载和卸载。
4.掌握Linux系统的启动和关闭操作。
二、实验内容1.安装VMware虚拟机,设置光盘驱动器,为Linux系统安装做准备。
2.在虚拟机下安装Linux操作系统(如Ubuntu桌面版本)。
3.配置Linux系统运行环境。
4.利用空闲分区创建新的Linux系统分区。
5.将新的Linux系统分区挂载到系统中;卸载新挂载的分区,重新挂载到目录树中的其他位置。
三、主要的实验步骤1.制定安装系统的分区计划。
2.配置光驱引导镜像文件iso,启动系统,开始安装过程。
3.根据安装计划,对磁盘空间进行分区设置。
4.根据系统安装指导,完成Linux系统的安装过程。
5.安装成功后,退出系统,重新启动虚拟机,登陆Linux操作系统。
6.对Linux系统进行配置,如网络设备等。
7.利用磁盘使用工具和mount,将新创建的Linux系统分区挂载到系统中。
将新挂载的分区卸载,并重新挂载到目录树的其他位置。
实验二Linux常用命令使用一、实验目的1.掌握Linux一般命令格式。
2.掌握有关文件和目录操作的常用命令。
3.熟练使用man命令。
二、实验内容1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。
2.在用户主目录下对文件进行操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。
3.对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。
4.利用man命令显示date、echo等命令的手册页。
5.显示系统中的进程信息。
三、主要实验步骤1.登陆进入系统,修改个人密码。
2.使用简单命令:date、cal、who、echo、clear等,了解Linux命令格式。
操作系统原理实验3-进程管理

《操作系统原理》实验报告
实验序号:3 实验项目名称:进程管理
一、实验目的及要求
1. 加深对进程概念的理解,明确进程和程序的区别。
2. 进一步认识并发执行的实质。
3. 掌握Linux操作系统下的进程的创建与撤销。
二、实验设备(环境)及要求
1.虚拟机VMware Workstation、Ubuntu操作系统和C语言编程。
2.创建多个父进程与子进程,并撤销这些进程。
3.编写一段程序,使用系统调用fork()创建两个子进程。
当此程序运行时,在系统中有一个父进程和两个子进程活动。
让每一个进程在屏幕上显示一个字符:父进程显示字符a;子进程分别显示字符b和字符c。
试观察记录屏幕上的显示结果并分析原因。
三、实验内容与步骤
1.创建多个父进程与子进程
2.撤销这些进程
kill命令
3.编写程序
4.运行
四、实验结果与数据处理
分析:从进程并发执行来看,输出bca或abc的任意排列
原因:fork()创建进程所需要的时间要多于输出一个字符的时间,因此在主进程创建进程2的同时,进程1就输出了”b”,而进程2和主程序的输出次序是有随机性的,所以会出现多种可能结果。
五、分析与讨论
fork函数的原理是:一个现有进程可以调用fork函数创建一个新进程。
由fork 创建的新进程被称为子进程(child process)。
fork 函数被调用一次但返回两次。
两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。
六、教师评语
成绩
签名:
日期:。
天津理工大学_操作系统_存储器的分配与回收算法实现_实验报告

实验报告学院(系)名称:计算机与通信工程学院【实验过程记录(源程序、测试用例、测试结果及心得体会等)】源程序:MemoryBlock.java://内存块类,包含各种操作public class MemoryBlock {static final int BLOCK_SIZE = 4096;private int baseBlock; //内存块基地址private int blockNum; //大小private boolean inUse; //是否已分配private MemoryBlock prev, next;public MemoryBlock(int blockNum) {this.baseBlock = 0;this.blockNum = blockNum;inUse = false;prev = null;next = null;}public MemoryBlock(int base, int blockNum) {this.baseBlock = base;this.blockNum = blockNum;inUse = false;prev = null;next = null;}public int getBlockNum() {return blockNum;}public void setBlockNum(int blockNum) {this.blockNum = blockNum;}public MemoryBlock getPrev() {return prev;}public void setPrev(MemoryBlock prev) {this.prev = prev;public MemoryBlock getNext() {return next;}public void setNext(MemoryBlock next) {this.next = next;}public boolean inUse() {return inUse;}public void setUse() {inUse = true;}public void free() {inUse = false;}public int getBaseBlock() {return baseBlock;}public void setBaseBlock(int baseBlock) { this.baseBlock = baseBlock;}//分配内存块,如果可分配,则返回剩余内存块public MemoryBlock allocate(int blockNum) { if(this.blockNum - blockNum>0) {int newBase = baseBlock + blockNum;int newBlock = this.blockNum-blockNum;this.blockNum = blockNum;setUse();return new MemoryBlock(newBase, newBlock);}else if(this.blockNum - blockNum ==0) {this.blockNum = 0;}return null;}//判断内存块是否能合并public boolean merge(MemoryBlock memBlock) {if(baseBlock+blockNum==memBlock.getBaseBlock()) {setBlockNum(blockNum+memBlock.blockNum);memBlock.setBaseBlock(0);memBlock.setBlockNum(0);return true;}elsereturn false;}@Overridepublic String toString() {String inUse = null;if(inUse())inUse = "已分配";else inUse = "未分配";return"内存块 [基地址=" + baseBlock + ", 大小=" + blockNum +", " + inUse + "]";}}MemoryTable.java://虚类MemTable,提供内存链表的各种基本方法public abstract class MemoryTable {//MemoryBlock链表表头protected MemoryBlock memList;public MemoryTable(int blockNum) {memList = new MemoryBlock(0, blockNum);}//把newBlock插入到memBlock前面public void insertBefore(MemoryBlock memBlock, MemoryBlock newBlock){if(memBlock.getPrev() != null)memBlock.getPrev().setNext(newBlock);if(memList == memBlock)memList = newBlock;newBlock.setPrev(memBlock.getPrev());newBlock.setNext(memBlock);memBlock.setPrev(newBlock);}//在memBlock后插入newBlockpublic void insert(MemoryBlock memBlock, MemoryBlock newBlock) { if(memBlock.getNext() != null)memBlock.getNext().setPrev(newBlock);newBlock.setNext(memBlock.getNext());memBlock.setNext(newBlock);newBlock.setPrev(memBlock);}//删除块的连接关系,但不释放块public void remove(MemoryBlock memBlock) {if(memBlock == memList)memList = memBlock.getNext();if(memBlock.getNext()!=null)memBlock.getNext().setPrev(memBlock.getPrev());if(memBlock.getPrev()!=null)memBlock.getPrev().setNext(memBlock.getNext());}public void print() {MemoryBlock memBlock = memList;int i=0;while(memBlock != null) {System.out.print(i+" ");System.out.println(memBlock);i++;memBlock = memBlock.getNext();}}//合并邻接的空闲内存public void merge(MemoryBlock newBlock) {MemoryBlock memBlock = memList;while(memBlock != null) {if(!memBlock.inUse()) {if(memBlock.merge(newBlock)) {memBlock.setBlockNum( memBlock.getBlockNum() +newBlock.getBlockNum());remove(newBlock);break;}if(newBlock.merge(memBlock)) {newBlock.setBlockNum( newBlock.getBlockNum() + memBlock.getBlockNum());break;}}memBlock = memBlock.getNext();}}//分配内存(抽象函数)public abstract boolean allocate(int blockNum);//释放内存(抽象函数)public abstract boolean free(int baseBlock);}FirstFit.java:public class FirstFit extends MemoryTable{public FirstFit(int blockNum) {super(blockNum);}@Overridepublic boolean allocate(int blockNum) {MemoryBlock memBlock = memList;while(memBlock!=null) {if(!memBlock.inUse()) {if(memBlock.getBlockNum()>blockNum) {MemoryBlock newBlock = memBlock.allocate(blockNum);insert(memBlock, newBlock);return true;}else if(memBlock.getBlockNum()==blockNum) {memBlock.setUse();}}memBlock = memBlock.getNext();}return false;}//分配内存(类内使用)void freeMemory(MemoryBlock freeBlock) {MemoryBlock prev = freeBlock.getPrev();MemoryBlock next = freeBlock.getNext();freeBlock.free();while(!prev.inUse() && (prev.merge(freeBlock))) {prev.setBlockNum( prev.getBlockNum() +freeBlock.getBlockNum());remove(freeBlock);freeBlock = prev;if(freeBlock.getPrev()!=null)prev = freeBlock.getPrev();else return;}}if(freeBlock.getNext()!=null) {while(!next.inUse() && (freeBlock.merge(next))) {freeBlock.setBlockNum ( next.getBlockNum() +freeBlock.getBlockNum());remove(next);freeBlock = next;if(freeBlock.getNext()!=null)next = freeBlock.getNext();else return;}}}@Overridepublic boolean free(int baseBlock) {MemoryBlock memBlock = memList;while(memBlock != null) {if(memBlock.getBaseBlock() == baseBlock) {freeMemory(memBlock);return true;}memBlock = memBlock.getNext();}return false;}}BestFit.java:public class BestFit extends MemoryTable {private MemoryBlock usedMemory;public BestFit(int blockNum) {super(blockNum);usedMemory = null;}@Overridepublic boolean allocate(int blockNum) {MemoryBlock memBlock = memList;MemoryBlock minBlock = null;for(;memBlock!=null; memBlock = memBlock.getNext()) { if(!memBlock.inUse()&&(memBlock.getBlockNum()>=blockNum)) { minBlock = memBlock;break;}}if(minBlock != null) {remove(minBlock);if(minBlock.getBlockNum()!=blockNum) {MemoryBlock newBlock = minBlock.allocate(blockNum);insertUnused(newBlock);}insertUsed(minBlock);return true;}elsereturn false;}boolean freeMemory(MemoryBlock freeBlock) {if(freeBlock != null) {freeBlock.free();removeUsed(freeBlock);insertUnused(freeBlock);return true;}return false;}@Overridepublic boolean free(int baseBlock) {MemoryBlock memBlock = usedMemory;while(memBlock != null) {if(memBlock.getBaseBlock() == baseBlock) {freeMemory(memBlock);merge(memBlock);return true;}memBlock = memBlock.getNext();return false;}//在已分配链表删除public void removeUsed(MemoryBlock memBlock) {if(memBlock == usedMemory)usedMemory = memBlock.getNext();if(memBlock.getNext()!=null)memBlock.getNext().setPrev(memBlock.getPrev());if(memBlock.getPrev()!=null)memBlock.getPrev().setNext(memBlock.getNext());}//插入未分配链表void insertUnused(MemoryBlock newBlock) {if(memList == null)memList = newBlock;else {MemoryBlock memBlock = memList;MemoryBlock preBlock = null;while(memBlock!=null) {if(newBlock.getBlockNum()<=memBlock.getBlockNum()) { insertBefore(memBlock, newBlock);return;}preBlock = memBlock;memBlock = memBlock.getNext();}insert(preBlock, newBlock);}}//插入已分配链表void insertUsed(MemoryBlock newBlock) {if(usedMemory == null)usedMemory = newBlock;else {MemoryBlock memBlock = usedMemory;while(memBlock.getNext() != null)memBlock = memBlock.getNext();memBlock.setNext(newBlock);newBlock.setPrev(memBlock);}}public void print() {super.print();MemoryBlock memBlock = usedMemory;int i=0;while(memBlock != null) {System.out.print(i+" ");System.out.println(memBlock);i++;memBlock = memBlock.getNext();}}}WorstFit.java:public class WorstFit extends MemoryTable {//已分配链表private MemoryBlock usedMemory;public WorstFit(int blockNum) {super(blockNum);usedMemory = null;}@Overridepublic boolean allocate(int blockNum) {MemoryBlock maxBlock = memList;if(maxBlock.getBlockNum()<blockNum)return false;remove(maxBlock);if(maxBlock.getBlockNum()!=blockNum) {MemoryBlock newBlock = maxBlock.allocate(blockNum);insertUnused(newBlock);}insertUsed(maxBlock);return true;}boolean freeMemory(MemoryBlock freeBlock) {if(freeBlock != null) {freeBlock.free();removeUsed(freeBlock);insertUnused(freeBlock);}return false;}@Overridepublic boolean free(int baseBlock) {//已分配链表MemoryBlock memBlock = usedMemory;while(memBlock != null) {if(memBlock.getBaseBlock() == baseBlock) {freeMemory(memBlock);merge(memBlock);return true;}memBlock = memBlock.getNext();}return false;}public void removeUsed(MemoryBlock memBlock) {if(memBlock == usedMemory)usedMemory = memBlock.getNext();if(memBlock.getNext()!=null)memBlock.getNext().setPrev(memBlock.getPrev());if(memBlock.getPrev()!=null)memBlock.getPrev().setNext(memBlock.getNext());}void insertUnused(MemoryBlock newBlock) {if(memList == null)memList = newBlock;else {MemoryBlock memBlock = memList;MemoryBlock preBlock = null;while(memBlock!=null) {if(newBlock.getBlockNum()>=memBlock.getBlockNum()) { insertBefore(memBlock, newBlock);return;}preBlock = memBlock;memBlock = memBlock.getNext();}insert(preBlock, newBlock);}}void insertUsed(MemoryBlock newBlock) {if(usedMemory == null)usedMemory = newBlock;else {MemoryBlock memBlock = usedMemory;while(memBlock.getNext() != null)memBlock = memBlock.getNext();memBlock.setNext(newBlock);newBlock.setPrev(memBlock);}}public void print() {super.print();MemoryBlock memBlock = usedMemory;int i=0;while(memBlock != null) {System.out.print(i+" ");System.out.println(memBlock);i++;memBlock = memBlock.getNext();}}}测试用例:Main.java:public class Main {public static void main(String[] args) {testFirstFit();System.out.println();testBestFit();System.out.println();testWorstFit();}public static void testFirstFit() {MemoryTable mem = new FirstFit(1024);System.out.println("测试首次适应法:");mem.allocate(512);mem.allocate(256);mem.allocate(128);mem.print();mem.free(512);mem.free(768);mem.print();}public static void testBestFit() {MemoryTable mem = new BestFit(1024);System.out.println("测试最佳适应法:");mem.allocate(1);mem.allocate(2);mem.allocate(3);mem.print();mem.free(0);mem.free(1);mem.print();}public static void testWorstFit() {MemoryTable mem = new WorstFit(1024);System.out.println("测试最坏适应法:");mem.allocate(1);mem.allocate(2);mem.allocate(3);mem.print();mem.free(0);mem.free(3);mem.print();}}测试结果:测试首次适应法:分配 512 内存分配 256 内存分配 128 内存内存单元:0 内存块 [基地址=0, 大小=512, 已分配]1 内存块 [基地址=512, 大小=256, 已分配]2 内存块 [基地址=768, 大小=128, 已分配]3 内存块 [基地址=896, 大小=128, 未分配]释放 512 处内存释放 768 处内存内存单元:0 内存块 [基地址=0, 大小=512, 已分配]1 内存块 [基地址=512, 大小=512, 未分配]测试最佳适应法:分配 1 内存分配 2 内存分配 3 内存内存单元:0 内存块 [基地址=6, 大小=1018, 未分配]0 内存块 [基地址=0, 大小=1, 已分配]1 内存块 [基地址=1, 大小=2, 已分配]2 内存块 [基地址=3, 大小=3, 已分配]释放 0 处内存释放 1 处内存内存单元:0 内存块 [基地址=0, 大小=3, 未分配]1 内存块 [基地址=6, 大小=1018, 未分配]0 内存块 [基地址=3, 大小=3, 已分配]测试最坏适应法:分配 1 内存分配 2 内存分配 3 内存内存单元:0 内存块 [基地址=6, 大小=1018, 未分配]0 内存块 [基地址=0, 大小=1, 已分配]1 内存块 [基地址=1, 大小=2, 已分配]2 内存块 [基地址=3, 大小=3, 已分配]释放 0 处内存释放 3 处内存内存单元:0 内存块 [基地址=3, 大小=1021, 未分配]1 内存块 [基地址=0, 大小=1, 未分配]0 内存块 [基地址=1, 大小=2, 已分配]心得体会:1.使用类来进行一些方法的重用2.释放内存时,根据不同的分配方法进行相邻的内存合并3.链表应根据具体情况优化从而简化代码。
Linux基本操作的实验报告.ppt

一. Linux目录管理有关命令
2. cd ---改变当前工作目录 命令格式:cd [目录名]
注: 与Dos的cd命令类似; 当前目录/绝对卢静/相对路径
3.Ls--- 列出文件目录的信息 命令格式:ls [可选项] [子目录名] [文件名] 注: 与Dos的cd命令类似; 当前目录/绝对路径/相对路径 可选项: -a ;列出全部的文件,包括那些隐藏文件. -l :按长格式列目录,输出信息包括文件目录,文件的权限、所属用户组、 文件建立和修改的时间等信息。 -d :只列出子目录信息。 -o :用不同颜色显示各种类型的文件,蓝色表示子目录、绿色表示可执行 文件、红色表示压缩文件、浅蓝色表示连接文件、灰色表示其它文件。
一. Linux目录管理有关命令
注: 通配符的使用与Windows类似: *,?. 如: [1-9]* ----所有以1-9中任意一个字符开头的文件 [1,3,5]* ---- 所有以1或3或5开头的文件
二.更改目录或文件访问权限的命令
Linux中的访问权限
在Linux中,对目录访问的用户分为三
2. chmod ---改变文件或目录的访问权限 命令格式:chmod [可选项] [权限] [目录或文件名] 可选项: -v :报告权限更改信息;
-c :每次发生权限的实质性更改时给出一条信息。
(1) 文字设定法 格式:chmod [who] [+ |-|=] [mode] [文件名 | 目录名] who: u—user g—group o—others a—all + 添加 - 取消 = 赋予给定权限并取消其他所有权限 例如: $chmod g+r,o+r example
linux常用命令实验实验报告 -回复

linux常用命令实验实验报告-回复Linux常用命令实验实验报告一、引言在计算机领域,掌握常用命令是非常重要的。
对于使用Linux操作系统的用户来说,熟悉常用命令更是必备的技能之一。
本篇实验报告将以"Linux常用命令"为主题,介绍并实验一些常用的Linux命令,包括文件与目录管理、权限管理、网络管理、进程管理等方面的命令。
通过本次实验,希望进一步巩固和提升大家对Linux操作系统的理解和实践能力。
二、实验一:文件与目录管理1. 文件列表命令:ls首先,我们来介绍一下`ls`命令,该命令用于列出当前目录下的所有文件和文件夹。
通过在终端中输入`ls`命令,可以查看当前目录下的文件列表。
2. 创建目录命令:mkdir接下来,我们将尝试使用`mkdir`命令创建一个新的目录。
可以输入`mkdir directory_name`来创建一个名为"directory_name"的目录。
3. 切换目录命令:cd使用`cd`命令可以切换当前工作目录。
例如,要进入某个目录,可以使用`cd directory_name`命令。
要返回上一级目录,可以使用`cd ..`。
4. 复制文件命令:cp`cp`命令用于复制文件和目录。
要复制一个文件,可以使用`cp source_file destination_file`命令。
例如,`cp file1.txt file2.txt`将会复制"file1.txt"并将其命名为"file2.txt"。
5. 删除文件命令:rm要删除一个文件,可以使用`rm file_name`命令。
例如,要删除"file.txt"文件,可以输入`rm file.txt`。
6. 查找文件命令:find使用`find`命令可以在文件系统中查找文件。
例如,`find / -namefile_name`将会在根目录下找到名为"file_name"的文件。
2022年linux操作系统实验报告

LINUX操作系统实验报告姓名班级学号指引教师年05月16 日实验一在LINUX下获取协助、Shell实用功能实验目旳:1、掌握字符界面下关机及重启旳命令。
2、掌握LINUX下获取协助信息旳命令:man、help。
3、掌握LINUX中Shell旳实用功能,命令行自动补全,命令历史记录,命令旳排列、替代与别名,管道及输入输出重定向。
实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机。
2、使用命令“cat /etc/cron.daliy”设立为别名named,然后再取消别名。
3、使用echo命令和输出重定向创立文本文献/root/nn,内容是hello,然后再使用追加重定向输入内容为word。
4、使用管道方式分页显示/var目录下旳内容。
5、使用cat显示文献/etc/passwd和/etc/shadow,只有对旳显示第一种文献时才显示第二个文献。
实验环节及成果:1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入命令Shutdown -h 302、使用命令alias将/etc/cron.daliy文献设立为别名named,左边是要设立旳名称右边是要更改旳文献。
查看目录下旳内容,只要在终端输入命令即可。
取消更改旳名称用命令unalias 命令:在命令后输入要取消旳名称,再输入名称。
3.输入命令将文献内容HELLO重定向创立文本文献/root/nn,然后用然后再使用追加重定向输入内容为word。
环节与输入内容HELLO同样,然后用命令显示文献旳所有内容。
4.使用命令ls /etc显示/etc目录下旳内容,命令是分页显示。
“|”是管道符号,它可以将多种命令输出信息当作某个命令旳输入。
5实验二文献和目录操作命令实验目旳:1、掌握LINUX下文献和目录旳操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、mv、rm等。
2、掌握LINUX下建立链接文献旳措施。
Linux操作系统第三次实验报告

3.修改用户的密码和有效期等信息。
4.创建系统用户*system(其中*为学生姓名拼音首字母组合)。
5.查看用户配置文件/etc/passwd和/etc/shadow,观察内容变化情况,可以在命令行中执行文件显示命令,也可以使用grep命令来查找。
二、创建和管理组账户
1.创建一个新的组*group(其中*为学生姓名拼音首字母组合)。
2.修改组账户名称和GID。
3.查看用户所属组。
4.将用户添加到新建组中。
5.将用户从该新建组中删除。
6.查看组配置文件/etc/group和/etc/gshadow获取组账户信息列表,观察变化情况并做简要说明。
指导教师评语:
实验报告
课程名称:Linux操作系统
任课教师:
授课学期:
学生班级:
学生姓名:
实验题目:创建和管理用户账户
实验成绩:
指导教师:
实验室:
日期:
节数:2
实验目的:掌握用户账户和组账户的命令行操作。
实验仪器、物品:已安装好Ubuntu桌面和管理用户账户
1.创建一个普通用户*user(其中*为学生姓名拼音首字母组合)。
Linux操作系统实验教程(2021年整理精品文档)

(完整)Linux操作系统实验教程编辑整理:尊敬的读者朋友们:这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整)Linux操作系统实验教程)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整)Linux操作系统实验教程的全部内容。
Linux 操作系统实验教程第1章 Linux 系统概述一、Linux 系统结构从操作系统的角度来分析Linux ,它的体系结构总体上属于层次结构如下图所示:从内到外包括三层:最内层是系统核心,中间是Shell 、编译编辑实用程序、库函数等,最外层是用户程序,包括许多应用软件。
从操作系统的功能角度来看,它的核心有五大部分组成:进程管理、存储管理、文件管理、设备管理、网络管理。
各子系统实现其主要功能,同时相互之间是合作、依赖的关系。
进程会管理是操作系统最核心的内容,它控制了整个系统的进程调度和进程之间的通信,是整个系统合理高效运行的关键;存储管理为其他子系统提供内存管理支持,同时其他子系统又为内存管理提供了实现支持,例如要通过文件管理和设备管理实现虚拟存储器和内外存的统一管理。
二、配置一个双引导系统如果计算机中已经安装了其他操作系统,并想创建一个引导系统以便兼用Red Hat Linux和另外的操作系统,需要使用双引导。
机器启动时,可以选择其中之一,但不能同时使用两者。
每个操作系统都从自己的硬盘驱动器或硬盘分区中引导,并使用自己的硬盘驱动器或硬盘分区。
如果计算机上还没有安装任何操作系统,可以使用专门的分区及格式化软件给Windows创建指定大小的分区,Windows的文件系统为FAT,再为Linux系统创建所需要大小的分区(4G或更大),另外再给Linux留100MB左右的交换分区,Linux的文件系统为ext2。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
2016 至2017 学年第二学期
一、实验一
编写Shell程序,判断文件是否是符号链接文件,如果是则移动到/temp目录下,否则不做任何处理;
流程:
1.建立符号链接文件
2.运行脚本测试
3.查看/temp目录下的结果
操作流程如图1所示(源代码见附录):
图1 实验一
二、实验二
编写Shell程序,使用select命令生成选择菜单,允许用户在菜单中选择,并基于选择执行相应的命令;
如图2,该脚本有三个选项,分别为显示日期、显示时间和退出。
(源代码见附录)
图2 select命令
三、实验三
编写Shell程序,分别采用while和until循环结构来计算1~50之间所有奇数之和。
运行结果见图3,源代码参照附录。
图3 求和
四、心得体会
通过这次实验,初步了解Bash Shell的语法规则和基本的流程控制。
复习了课上讲过的脚本知识。
源代码
实验三sum_until.sh。