unix 实验报告
- 格式:docx
- 大小:3.68 KB
- 文档页数:3
湖南师范大学工学院UNIX/LINUX实验姓名:年级:专业:计算机科学与技术学号:任课教师:开课时间:2011年春实验一文件拷贝CP命令的实现实验内容文件拷贝CP命令的实现指导教师姓名指导老师职称教授学生姓名所属班级计算机05班实训目的【1】掌握redhat AS5系统的安装【2】初步掌握文件系统分区的概念【3】学会增加新用户【4】重点掌握Linux/UNIX系统中重要的编辑器Vi(m) 【5】通过上机实验能熟练的用Vi(m)编辑脚本文件实训要求【1】根据实训手册独立完成,鼓励相互之间讨论【2】Vi(m)的基本命令要熟练掌握。
【3】所有实训项目不能使用图形界面(GUI),所有的操作要求在终端或控制台中完成。
【4】时间:4学时。
实验详细步骤一、使用vi编辑器编写实现cp拷贝命令的c文件二.编译编写的c语言文件,使用参数-o产生horse.o结果文件三.测试拷贝命令的使用1.单个文件的拷贝源文件为/horse/src.txt,目标目录为/horse/dest2.目录拷贝源目录为/horse/src,目标目录为/horse/dest实验二Oracle安装实验内容Oracle 安装指导教师姓名指导老师职称教授学生姓名所属班级计算机05班任务要求【1】掌握Oracle 系统的安装【2】掌握用户、组的添加和权限设置,创建目录和设置权限;【3】掌握系统内核参数的调整和系统配置方法【4】理解和掌握环境变量和shell启动文件的配置【5】熟练掌握rpm,gunzip, gzip 等命令主要实施步骤【1】第1部分:安装 Linux【2】第 2 部分:针对 Oracle 配置 Linux 【3】2.3 安装相关的包【4】2.4 创建 Oracle 组和用户帐户【5】2.5 配置 Linux 内核参数【6】2.6启用X Window System【7】2.7 修改系统发布版本标志【8】2.8 为 oracle用户设置 Shell限制【9】2.9 关闭SELINUX实训要求【1】学生组根据本指导手册独立完成,鼓励相互之间讨论【2】 rpm等基本命令要熟练掌握【3】所有配置文件要求用vi(m)编辑器完成,不能使用GUI编辑器。
Unix编程实验报告班级:CCCCCCCC学号:XXXXXXX姓名:XXX一、实验目的练习vi,使用UNIX的系统调用和库函数,体会UNIX文件通配符的处理方式以及命令对选项的处理方式。
二、实验要求编程实现程序list.c,列表普通磁盘文件(不考虑目录和设备文件等),列出文件名和文件大小。
a)与ls命令类似,命令行参数可以有0到多个i.0个参数:列出当前目录下所有文件ii.参数为普通文件:列出文件iii.参数为目录:列出目录下所有文件b)实现自定义选项r,a,l,h,m以及--i.r 递归方式列出子目录ii. a 列出文件名第一个字符为圆点的普通文件(默认情况下不列出文件名首字符为圆点的文件,即只显示隐藏文件)iii.l 后跟一整数,限定文件大小的最小值(字节)iv.h 后跟一整数,限定文件大小的最大值(字节)v.m 后跟一整数n,限定文件的最近修改时间必须在n天内vi.-- 显式地终止命令选项分析三、程序源码#include <stdio.h>#include <stdlib.h>#include <dirent.h>#include <errno.h>#include <sys/stat.h>#include <string.h>/*将char[]转换为数字*/int sav(char ch[],int l[]){int i=0;l[0]=0;while(ch[i]!='\0')if(ch[i]<='9'&&ch[i]>='0'){l[0]=10*l[0]+ch[i]-'0';i++;}elsereturn 0;return 1;}main(int argc, char *argv[]){int i,j,k,ret,l=-1,h=-1,m=-1;char path[30],path1[30];struct stat st;DIR *dir; /*定义Dir*/struct dirent * entry; /*定义Dirent entry*/int order[7]; /*各个数字代表含义order[1]->r; [2]->a; [3]->l; [4]->h; [5]->m;[6]->--*/time_t tp; /*当前时间*//*得到当前path*/for(i = 1; i < argc; i++);i--;if(argv[i][0]=='/' && argc!=1){for(j = 0; argv[i][j] != '\0'; j++)path[j] = argv[i][j];path[j]='\0';}else{path[0]='.';path[1]='\0';}/*Get Order*/for(i=1;i<=6;i++)order[i]=0;for(i = 1; i < argc; i++){if(argv[i][0]=='-'){if(argv[i][1]=='r')order[1]=1;elseif(argv[i][1]=='a')order[2]=1;elseif(argv[i][1]=='l'){order[3]=1;i++;if(i<argc)if(sav(argv[i],&l)==0) {printf("Wrong order!\n");return;}}elseif(argv[i][1]=='h'){order[4]=1;i++;if(i<argc)if(sav(argv[i],&h)==0){printf("Wrong order!\n");return;}}elseif(argv[i][1]=='m'){order[5]=1;i++;if(i<argc)if(sav(argv[i],&m)==0){printf("Wrong order!\n"); return;}}elseif(argv[i][1]=='-'){order[6]=1;i=argc+1;}else{printf("Wrong order!\n"); return;}}}/*检查order*/if(order[3]==1 && l==-1){printf("Wrong order!\n");return;}if(order[4]==1 && h==-1){printf("Wrong order!\n");return;}if(order[5]==1 && m==-1){printf("Wrong order!\n");return;}time(&tp);/*获取当前时间*/ret = stat(path, &st);/*获取信息*//*处理order的信息*/if(ret == 0) /*成功读取path信息*/{if(S_ISDIR(st.st_mode)) /*如果是dir*/{dir = opendir(path);if (dir == NULL) /*Unreadable*/{printf("Open directory \"%s\": %s (ERROR %d)\n",path, strerror(errno), errno);return 1;}while ((entry = readdir(dir)) != NULL) /*一直读,直至文件结束*/{strcpy(path1,path);strcat(path1, "/");strcat(path1, entry->d_name);stat(path1, &st);if(order[1]==0) /*不是-r*/{if(order[2]==1) /*-a*/{if(order[3]==1 && order[4]==1) /*-l 和-h*/{if((st.st_size<=h) && (st.st_size>=l))if(order[5]==1){ /*-m*/if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}else /*no -m*/printf("%s \n", entry->d_name);}else if(order[3]==1 && order[4]==0){if(st.st_size>=l)if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}elseprintf("%s \n", entry ->d_name);}else if(order[3]==0 && order[4]==1){if(st.st_size<=m)if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}elseprintf("%s \n", entry->d_name);}else if(order[3]==0 && order[4]==0){if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}elseprintf("%s \n", entry->d_name); }}else{if(order[3]==1 && order[4]==1){if((st.st_size<=h) && (st.st_size>=l) && entry->d_name[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);} elseprintf("%s \n", entry->d_name); }else if(order[3]==1 && order[4]==0){if(st.st_size>=l && entry->d_name[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}elseprintf("%s \n", entry->d_name);}else if(order[3]==0 && order[4]==1){if(st.st_size<=m && entry->d_name[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);} elseprintf("%s \n", entry->d_name);}else if(order[3]==0 && order[4]==0){if(entry->d_name[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", entry->d_name);}elseprintf("%s \n", entry->d_name);}}}/*order[1]=0 end*/}/*while*/closedir(dir);}/*is DIR*/else/*not a dir*/{/*Change path into filename*/for(i=0,j=0;path[i]!='\0';i++)if(path[i]=='/')j++;k=j;for(j=0,i=0;j<k;i++)if(path[i]=='/')j++;k=i;for(j=0;path[j+k]!='\0';j++)path[j]=path[j+k];path[j]='\0';/*Deal with the orders, not considering order[1]-->-r*/ if(order[2]==1){if(order[3]==1 && order[4]==1){if((st.st_size<=h) && (st.st_size>=l))if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m) printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==1 && order[4]==0){if(st.st_size>=l)if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==0 && order[4]==1){if(st.st_size<=m)if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==0 && order[4]==0){if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}}else{if(order[3]==1 && order[4]==1){if((st.st_size<=h) && (st.st_size>=l) && path[0]!='.') if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==1 && order[4]==0){if(st.st_size>=l && path[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==0 && order[4]==1){if(st.st_size<=m && path[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}else if(order[3]==0 && order[4]==0){if(path[0]!='.')if(order[5]==1){if(((tp-st.st_mtime)/86400+1)<=m)printf("%s \n", path);}elseprintf("%s \n", path);}}}}/*path 正确*/else{printf("Wrong path.\n");}/*path 错误*/return;}/*main*/四、测试结果(1)./list –l 100 –h 5000 /bin /etc (列出大小在100~5000之间的文件)。
河南工程学院运算机学院Linux操作系统实验报告册适用专业: 16级运算机网络学期: 一专业: 运算机网络技术班级: 1622班学号: 7227姓名: 丁方指导教师: 刘晓东2017年9月实验一Linux操作系统安装与关闭一实验学时:1学时二、实验目的1.能够独立安装linux操作系统2.掌握启动和退出ubuntu的方式。
3.掌握启动和退出ubuntu的方式和在不同运行级别下的ubuntu查看。
三、实验环境及条件实际机械环境下安装虚拟,ubuntu操作系统。
四、实验原理(一)安装ubuntu操作系统的预备工作:1.ubuntu的硬件需求:(1)CPU(2)硬盘空间:最少安装10G;安装服务器850MB;安装个人桌面;安装工作站;全数安装(3)内存CPU的类型和型号2.安装前的预备(1)硬件兼容性(2)磁盘空间(3)安装类型:个人桌面、工作站、服务器、定制、升级四、安装ubuntu操作系统的步骤:用 BT 下载 Ubuntu 桌面安装光盘 ISO 档,并烧成光盘或 U 盘。
Vista/7 利用者请先用 Vista/7 提供的 Disk Management Console 缩小分割区。
如硬盘有一些重要的资料,请先备份。
用桌面安装光盘开机。
先选择『中文(繁体)』或『中文(简体)』作为安装语言,并按『安装 Ubuntu』(Install Ubuntu)。
确认您运算机有很多于 3GB 的磁盘空间安装 Ubuntu,有接上电源 (不是利用电池) 和有连接至因特网 (利用有线较佳),并选取『安装此第三方软件』(Install this third-party software) 让安装程序自动安装 Flash 播放器和各专利音乐/影片格式的译码器等。
然后按『下一步』(Forward)。
因应您运算机的情形,选择安装 Ubuntu 的方案:硬盘有超过 3GB 未分割的空间能够安装Ubuntu/Kubuntu/Xubuntu/Lubuntu,能够选利用最大的持续可用空间 (use the largest continuous free space)。
Unix实验报告班级:110616学号:11061174姓名:罗凡一、实验要求用c语言编写一个简单的shell,可以运行不带参数的外部命令,支持标准I/O重定向,可以通过管道连接两个命令。
外部命令的路径可以是固定路径。
每个功能的实现原理,流程图(伪代码),运行结果截图,源代码二、程序流程首先,对输入的命令进行解析,根据shell指令的管道符号“|”划分出每个简单指令。
然后利用fork()函数、execvp()函数创建进程,同时利用pipe()函数创建管道,通过文件操作修改各个进程的文件描述符以实现输入输出流的重定向,并实现管道的连接。
简明流程图如下:三、运行结果3.1 不带参数的外部命令ls、data3.2输出重定向3.3输入重定向3.4管道连接两个命令四、各功能实现原理为了使功能介绍更加清晰,将其具体内容嵌入程序源代码的注释中,如下:#include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <unistd.h>#include <sys/wait.h>#define CMD_LINE 1024#define PIPE_MAX 16#define ARG_MAX 10typedef struct {char *arg[ARG_MAX];char *in;char *out;} cmd_t;extern int parse_token(char *buf, cmd_t cmd[]);extern int parse(char *buf, cmd_t * cmd);extern int test_parse(cmd_t cmd[], int len);int main(int argc, char *argv[]){char buf[CMD_LINE];cmd_t cmd[PIPE_MAX + 1];int fd[PIPE_MAX][2];int j, i;int cmd_len, pipe_len;pid_t pid;while (1) {printf("LuoFan_shell#");fgets(buf, CMD_LINE, stdin);buf[strlen(buf) - 1] = '\0';cmd_len = parse_token(buf, cmd); //解析命令,获得命令并去掉结尾的\0pipe_len = cmd_len - 1;if (pipe_len > PIPE_MAX)continue;for (i = 0; i < pipe_len; ++i)pipe(fd[i]); //创建pipe_len个管道 for (i = 0; i < cmd_len; ++i)if ((pid = fork()) == 0) //创建cmd_len个进程。
班级:09211311 姓名:schnee 日期:2012-05-27Unix 编程环境实验二shell命令的实现1.实验目的练习使用系统调用函数实现一个shell命令的功能,进一步熟悉进程控制与进程间通信。
2.实验要求使用fork(),exec(),dup2(),pipe() ,open()系统调用完成与下列shell命令等价的功能。
grep –v usr < /etc/passwd | wc –l > result.txt3.相关系统调用说明-创建新进程用fork()- exec系统调用可以用execlp(file,argv0, argv1, …, 0);-创建匿名管道pipe(int fd[2]);其中fd[0]为读端,fd[1]为写端- dup2系统调用用法为dup2(src_fd, dst_fd);src_fd覆盖掉dst_fd-等待子程序结束用wait(&sv); int sv;4.实验代码#include<fcntl.h>#include<sys/types.h>#include<sys/stat.h>#include<sys/wait.h>#include<unistd.h>#include<stdlib.h>#include<string.h>#include<stdio.h>int main(){int sv, fd[2], infile, outfile;char *file;pipe(fd); //创建管道file="/etc/passwd";infile=open(file, O_RDONLY);file="result.txt";outfile=open(file, O_CREAT|O_WRONLY); //打开文件if(fork()==0){dup2(infile, 0); //输入重定向dup2(fd[1], 1);close(fd[1]);close(fd[0]);execlp("grep", "grep", "-v", "usr", 0); //系统调用}else if(fork()==0){dup2(fd[0], 0);dup2(outfile, 1); //输出重定向close(fd[1]);close(fd[0]);execlp("wc", "wc", "-l", 0); //系统调用}close(fd[1]);close(fd[0]); //不加则会死循环wait(&sv);wait(&sv); //不加则会导致僵尸进程return 0;}5.实验结果截图主文件夹下的a.cpp源文件,a可执行文件以及运行结果result.txt文本文件。
实验报告一、实验一:图书馆管理系统三、实验目的:掌握shell编程的一般方法,能运用常用的shell命令编写一个简单的shell程序,并能在Linux系统所提供的/bin/sh或/bin/bash下正确的运行。
四、实验原理:UNIX五、实验内容:编写一个菜单驱动的Linux图书馆管理程序(LLIB),该程序能够对书库中的图书执行增加一条记录、删除一条记录、显示一条记录、更新一条记录状态和打印报表等功能。
六、实验器材(设备、元器件):电脑七、实验步骤:1.增加一本书的函数需要依次读取用户的输入,每次先写出提示输入语句,然后读取输入。
CATEGORY可以使用简写,因此使用一个case语句进行变量的替换和规范化。
2.删除一本书要用户先输入书名或者作者名,然后找到一条记录,询问用户是否删除。
其中要输出这条记录的详细想信息,如果书已经借出去了,那么还要输出借出去的人和时间。
删除这条记录通过将除了这条记录之外的记录输出到一个临时文件中,然后用临时文件覆盖当前的数据文件即可。
3.显示书的详细信息和删除书的部分一致,只是最后不进行删除。
4.更新书也和删除书一致,只是当库存书改为借出状态时,需要用户额外输入信息。
并且多3个变量存储新的状态、借阅者姓名、日期。
5.REPORTS为输出所有书的信息,首先根据不同的选择,将ULIB_FILE排序后输出到temp,然后调用report函数输出temp中的值。
report函数使用一个while read 循环读取temp 中的每一行,然后格式化后输出到ttemp中。
最后使用more对于ttemp进行显示,在显示后还需要 read A,使得bash等待用户输入,不会显示完就进入菜单的循环。
八、实验数据及结果分析:1.初始界面2.主菜单3.编辑菜单4.添加书5.更新书6.显示书7.删除书8.显示菜单9.根据书名排序10.根据作者排序11.根据种类排序九、总结、改进建议及心得体会:学习了Shell编程。
华北电力大学实验报告||实验名称《UNIX/LINUX体系及编程》课程实验课程名称UNIX/LINUX体系及编程||专业班级:学生姓名:学号:成绩:指导教师:阎蕾实验日期:2014.11UNIX/LINUX体系及编程》课程实验任务书一、目的与要求1.掌握UNIX/Linux系统的目录和文件管理命令。
2.掌握shell的输入输出重定向,编写shell脚本文件。
3.编写C语言程序,使用GCC编译,使用GDB调试。
4.掌握make工具,撰写makefile文件,完成C程序的自动编译。
5.要求每人能独立完成实验。
二、主要内容1.用pwd命令显示用户主目录的路径名,用date命令查看当前日期和时间,用who命令查看当前登录在系统中的用户列表,利用who命令选项查看当前系统中的用户总数和系统启动时间。
比较whoami 和who am i显示的结果区别。
2.用vi编辑器,先在用户主目录中创建文件,编辑文件。
并作统计文件大小,重新编辑文件。
字符串替换等工作3.用find命令查找名为passwd的文件。
从用户主目录开始,查找所有1天前创建的文件。
查找文件属主的文件。
查找1天前被访问过的文件。
4.用重定向符和cat命令创建一个 flower脚本文件,完成如下功能。
4.1 显示用户名。
显示用户当前系统中的进程。
4. 2 判断当前用户是否为root用户:若是root用户,则根据命令行参数n,清除/var/log目录下的某个文件的内容但保留其最后的n行的内容,若没有参数,则保留10行;若不是root用户,提示出错。
5.编写C程序,编译、运行、调试程序。
用c语言程序编程实现:将输入的十进制数输出为相应的十六进制数。
并撰写makefile,使用make工具完成自动编译。
三、进度计划四、实验成果要求1.将操作截图贴报告中,包括命令、脚本、C代码、makefile文件内容及运行结果。
五、考核方式1.以实验报告作为实验成绩。
学生姓名:指导教师:阎蕾2014年9月9日x1.c代码Makefile代码内容:。
河南城建学院《 UNIX系统与软件开发》实验报告实验名称:实验3 名称:权限管理 _ 成绩:_________ _ __专业班级:学号:姓名:实验日期:2014 年 4 月 10 日实验器材:一台装有Windows操作系统PC机,上装有虚拟机系统VMWare,实验过程通过VMWare系统启Linux系统工作。
一、实验目的Unix/Linux权限和文件管理命令;Unix/Linux文件系统的使用;与文件系统管理相关的其它命令。
二、实验内容及过程(l)先用ls命令按不同的格式列样本目录的内容ls –l /dev/hda? /dev/tty? / network | less,结果如图1所示:图1输入命令ls –la /dev/hda? /dev/tty? / network | less(ls -l a 是列出当前目录中的所有文件和目录,包括隐藏文件和目录),结果如图2所示:图2输入命令:ls –lai /dev/hda? /dev/tty? / network | less,结果如图3所示:图3(2)使用权限管理命令chmod进行权限设置①使用命令:umask或umask –p 或 umask –S查看当前的umask值为0022,使用文件管理命令,touch myfile创建一个新文件myfile,使用目录管理命令,mkdir mydir创建一个新目录mydir;使用命令ls –l检查新创建文件的属性,如图4所示:图4②使用命令umask 0007,设置新的umask值。
然后使用命令,touch myf 创建一个新文件myf,使用命令mkdir myd创建一个新目录myd,如图5所示:图5并使用命令ls –l检查新创建文件的属性如图6所示:图6③为myf或目录myd修改权限(每完成一步操作都要用ls –l检查文件属性,并进行记录):为目录myd增加其它人的可进入和读权限命令:chmod o+rx myd,结果如图7所示:图7为目录myd和文件myf去除同组人的写权限:chmod g-w myd myf,结果如图8所示:图8将目录myd和文件myf的权限设为可读可写可执行:chmod 777 myd myf,结果如图9所示:图9去除其他人对目录myd和文件myf的权限访问权限:chmod o-rwx myd myf,结果如图10所示:图10将目录myd和文件myf的权限设为用户主和同组人可读可写可执行,而其他人不可访问:chmod 770 myf myd,结果如图11所示:图11(3)使用权限管理命令chown,chgrp等进行权限设置(每完成一步操作都要用ls –l检查文件属性,并进行记录):将目录myd用户主设为adm:chown adm myd将目录myd和文件myf的组设为lp:chgrp lp myd myf将目录myd及其所有子目录的用户主设为adm,组设为bin:chown -R adm:bin myd,结果如图12所示:图124)Ext2和Ext3扩展文件属性管理a. 查看新创建文件的扩展属性:lsattr myfb. 为myd和myf增加扩展属性:chattr +i myfc. 再查看myd和myf的扩展属性:lsattr myfd. 试图删除具有扩展属性i的文件myf,观察过程和结果,提示无法删除文件myf,如图13所示:e. 去掉myf的i扩展权限后,再删除该文件,看结果怎样?chattr –i myf; rm –f myf图13三、出现问题分析及解决如图13所示,在试图删除具有扩展属性i的文件myf,结果提示无法删除文件myf,用命令chattr –i myf去掉myf的i扩展权限后,再用rm –f myf删除该文件,则成功删除,结果如图13所示。
UNIX系统《实验2》实验报告实验项目1:学号姓名课程号实验地点指导教师时间评语:成绩教师签字实验二Linux网络配置与进程管理【实验目的】1.掌握Linux初步的系统管理;2.会在Linux下安装各种软件;3.学会使用vi编辑器;4.掌握Linux网络的配置;5.掌握掌握Linux的进程管理命令。
说明:Linux是多用户系统,每个系统用户都需要使用用户名和口令。
系统为每个登陆用户在/home目录下建立一个与用户名同名的子目录(root用户的主目录为/root)作为用户登陆的起点,用户可以在自己的主目录下创建文件和子目录。
每一个用户都会使用机器上的文件和资源,因而如何对这些用户进行管理,保证系统的效率和安全就显得非常重要。
Linux使用相应的命令完成对用户和用户组的管理。
运用这些命令,可以控制用户的增加删除和权限控制,以及日志的查询。
在Linux下,软件有多种安装包格式,而每种格式又有自己的安装命令和方法。
目前,Linux下流行的安装包格式主要有两种:一是二进制分发包格式;二是源代码分发包格式。
RPM包是Red Hat Linux提供的包封装格式,后缀名是.rpm;tar封装包是以tar与其他压缩工具(如gzip,bzip2)将应用程序和相关文件封装成包的方式,后缀名的格式主要是为.tar.gz、tar.Z、tar.bz2或.tgz。
RPM包是应用程序已经预先编译过的可直接安装文件。
对于以tar包分发的二进制包,则需使用命令将tar包解压,然后运行相应目录中的应用程序或运行程序提供的脚本。
源代码包就是源代码可见的软件包。
一个软件如果有源码,任何人都能看到它是如何开发而来的,用户可以通过修改源码来定制、优化软件,以适合实际需要。
vi编辑器有3种操作模式,分别是命令模式(Command mode)、插入模式(Insert mode)和末行模式(Last line mode)。
Linux中,通过编辑一些文本文件也可以对网络进行配置。
洛阳师范学院UNIX实验报告-————————————————————————————————作者: ————————————————————————————————日期:测试过程:(实验中出现的问题、错误、解决方法)基本算法思想掌握之后,程序的大体流程可以写出来,具体的问题,就是有时候会因为对个别函数的参数应用出问题老师有问必答,全部都给解决了实验总结:ﻫﻫﻫﻫ评语与成绩:ﻫﻫ教师签名:年月日洛阳师范学院信息技术学院软件实验报告专业:软件工程课程:UNIX高级编程学号:姓名:班级:实验名称终端与作业控制实验类型验证型实验时间2012-5-23 实验环境虚拟机下装有linux操作系统的windows操作系统实验目的与要求:掌握进程组、会话期、作业、控制终端的概念;掌握作业的前台、后台切换、终端输出控制;实验内容:1、有关知识点的验证1)写一段包含fork调用的程序,验证父子进程是否在同一组中2)调用setpgid函数,分别设置父进程和子进程为一个新组的组长进程,输出设置后的组ID,验证调用是否成功3)如果一个进程在创建子进程后,希望该子进程为一个新组的组长进程,setpgid应该被调用几次?在什么时机进行调用?4)如果子进程因执行exec函数而加载新程序执行,此时父进程调用setpgid函数设置子进程的组ID是否还能成功?验证你的结论5)编写一段程序,要求调用fork在子进程中建立一个新的对话期。
6)验证步骤5)中子进程的ID和组ID是否相等?是否能够向终端输出打印信息?2、验证进程终止及同步关系1)编写二个程序,每个程序都输出其组ID,通过管道线在命令行执行。
验证这两个程序是否属于同一作业;2)将上述命令行在后台执行,观察输出的情况,并解释原因3)参照教材P189的例子,使用stty命令禁止后台进程的终端输出4)参照教材P189的例子,使用fg命令切换后台作业为前提作业实验步骤:(算法描述、源程序、操作步骤和方法)有关知识点的验证写一段包含fork调用的程序,验证父子进程是否在同一组中有运行结果可知,子进程和父进程在同一实际组里。
unix 实验报告
UNIX 实验报告
一、引言
UNIX 是一种操作系统,广泛应用于计算机科学领域。
本实验报告旨在介绍UNIX 操作系统的基本概念、特点和使用方法,并通过实验验证其功能和性能。
二、UNIX 操作系统的基本概念
1. UNIX 的起源
UNIX 是由贝尔实验室的 Ken Thompson 和 Dennis Ritchie 在 1969 年开发的操作系统。
它最初是为了支持多用户、多任务和分时操作而设计的。
2. UNIX 的特点
UNIX 具有以下几个特点:
- 可移植性:UNIX 可以在不同的硬件平台上运行,使得软件开发更加灵活。
- 多用户和多任务:UNIX 支持多用户同时使用,并且可以同时运行多个程序。
- 分时操作:UNIX 采用分时操作方式,使得多个用户可以共享计算机资源。
- 强大的命令行界面:UNIX 提供了丰富的命令行工具,使用户可以通过命令完成各种操作。
3. UNIX 的文件系统
UNIX 使用层次化的文件系统来组织文件和目录。
文件系统的根目录为 "/",所有的文件和目录都从根目录开始构建。
UNIX 的文件系统采用了一种统一的文件访问方式,用户可以通过文件路径来访问文件。
三、UNIX 操作系统的使用方法
1. 登录和注销
用户可以通过用户名和密码登录到 UNIX 操作系统。
登录后,可以执行各种命
令和操作。
注销时,用户可以使用 "logout" 命令退出系统。
2. 文件和目录操作
UNIX 提供了一系列命令来管理文件和目录,如:
- "ls" 命令用于列出当前目录下的文件和目录;
- "cd" 命令用于切换当前目录;
- "mkdir" 命令用于创建新的目录;
- "rm" 命令用于删除文件或目录。
3. 进程管理
UNIX 允许同时运行多个进程,并提供了一些命令来管理进程,如:
- "ps" 命令用于查看当前正在运行的进程;
- "kill" 命令用于终止指定的进程。
4. 文件权限管理
UNIX 使用文件权限来控制对文件和目录的访问权限。
每个文件和目录都有一个所有者和一个用户组,可以通过 "chmod" 命令来修改文件的权限。
四、实验验证
为了验证 UNIX 操作系统的功能和性能,我们进行了一些实验。
1. 文件操作实验
我们创建了一个新的文件,并使用"ls" 命令查看当前目录下的文件列表。
然后,我们使用"chmod" 命令修改文件的权限,限制其他用户对该文件的访问。
最后,我们使用 "rm" 命令删除了该文件。
2. 进程管理实验
我们使用 "ps" 命令查看了当前正在运行的进程列表,并选择了一个进程使用"kill" 命令终止。
3. 性能测试实验
我们使用了一些性能测试工具来评估 UNIX 操作系统的性能,如:
- "time" 命令用于测量程序的运行时间;
- "top" 命令用于实时监视系统的性能。
通过实验,我们验证了 UNIX 操作系统的功能和性能,并对其进行了评估。
五、结论
UNIX 是一种功能强大、灵活可移植的操作系统,具有多用户、多任务和分时操作的特点。
通过本次实验,我们深入了解了 UNIX 的基本概念、特点和使用方法,并验证了其功能和性能。
UNIX 在计算机科学领域有着广泛的应用,并为软件开发和系统管理提供了强大的支持。