1、实验一、 UNIX 操作系统基本操作 1. 实验目的 通过本实验掌握 telnet 客户端的使用,登录到远程主机,熟悉文件系统的基本命令。2. 实验内容需掌握的基本命令包含: cat, cd, cp, head, ls, mkdir, mv, rm, passwd, pwd, rmdir, tail, wc 等;学会使用 vi 编辑文件。3. 实验准备了解 telnet 的原理和使用方法。了解上述基本命令的功能。4. 实验步骤1) 用 telnet 客户端登录到主机。2) 用 passwd 命令修改自己的口令。3) 用 pwd 命令察看自己的主目录( $HOME) 。4) 用 mkdir 在自
2、己的主目录($HOME)建立名为 psdir 的目录。5) 用 cd 命令把当前目录改为 $HOME/psdir。6) 用 vi 编辑文件 pass,输入修改后的口令并保存。7) 用 ls, cat, head, tail 观察 pass 文件。8) 用 cp 命令将 pass 复制一份为 pass2。9) 用 mv 命令将 pass2 移动到$HOME 下。10)建立文件 rmtest,用 rm 删除它。 5. 实验报告要求描述 unix 命令行的一般形式。6. 参考实例C telnet unixrootlocalhost /root#rootlocalhost /root# passwdN
3、ew UNIX password:Retype new UNIX password:passwd: all authentication tokens updated successfullyrootlocalhost /root# pwd/rootrootlocalhost /root# mkdir psdirrootlocalhost /root# cd psdirrootlocalhost psdir# vi passrootlocalhost psdir# cp pass pass2rootlocalhost psdir# mv pass2 rootlocalhost psdir# c
4、drootlocalhost /root# rm rmtest实验二、 设置个性化的工作环境1. 实验目的 调整并设置一个用户的工作环境。2. 实验内容设置用户自己的工作环境,可以设置的环境变量的文件是/etc/profile 和/etc/bashrc 以及用户自身的/.bashrc 和/.bash_profile。3. 实验准备了解 Linux/UNIX 下的基本命令 date, time, echo 等的基本用法。4. 实验步骤1) 修改自己$HOME 目录下的.bash_profile 文件。# .bash_profile# get the aliases and functionsif
5、 -f /.bashrc then ./.bashrcfiPATH=.$HOME/bin:$PATHexport PATHLOGNAME=$(logname)export LOGNAMEHOST=$(hostname)export HOSTumask 022set o ignoreeofEDITOR=/usr/bin/viMAIL=/usr/spool/mail/$LOGNAMEexport MAILcase $LOGNAME inroot) PS1=”$HOST #”;*) PS1=”$HOST $”;esacPS2=you need to finish inputingalias cls=
6、clearalias dir=lsalias ccopy=cpalias rename=mvalias md=mkdiralias rd=rmdiralias delete=rm rf2) 执行命令 source .bash_profile,使修改后的.bash_profile 生效。3) 检查是否实现了特定的工作环境设置。a) 执行命令 echo $HOST 和 echo $LOGNAME,分别显示主机名和用户名。b) 新建一个文件,执行命令 ls l 文件名,检查文件权限。c) 按下 ctrl+d 后不注销。d) 给当前用户发一封邮件,shell 提示有新邮件。e) 分别输入.bash_p
7、rofile 中的别名,相应执行别名所指定的命令。实验三、 Shell 编程方法1、实验目的 了解常用 shell 的编程特点,掌握 shell 程序设计的基础知识。对 shell 程序流程控制、shell 程序运行方式、bash 程序的调试方法及 bash 的常用内部命令又进一步的认识和理解。通过本实验,应基本掌握编写 shell 程序的步骤、方法和技巧。2、实验内容在 Linux B-shell 下,使用函数模块建立一个 shell 程序 source,用来存储和查询学生成绩,并提供菜单显示选项;同时可以根据用户输入的选项来执行查询、添加、计算总分、统计平均分等功能。另外,要求自己建立本组
8、学生姓名和成绩信息,并保存在当前$HOME目录的 record 文件中,文件中的每一行记录了一个学生的信息。学生信息包括:学号 姓名 考试成绩 试验成绩 作业成绩 总分(第一行)# XXX(其中,除了“总分” ,通过计算而得到外,其他通过输入得到。各个域之间用 tab 分隔;总分=考试成绩+ 试验成绩 +作业成绩)3、实验准备了解 shell 语言的基本语法、控制流程,命名规范,了解 shell 程序的基本结构。4、实验步骤1)建立/record 文件,其第一行内容如下:学号 姓名 考试成绩 试验成绩 作业成绩 总分(第一行)2)编写 shell 程序完成查询、添加、删除、显示所有记录、统计总
9、分,计算平均分(所有人总分之和/总人数)3)实验源程序:参考实验指导书, UNIX 操作系统实验教程P32-35.4)提示:取文件 record 的第 n 行的命令可以用head n record | tail -1实验四、文件记录锁定一、使用 fcntl 的实现more tlock.c more fcntlock.c #include #include #include int main()int fd;struct flock lock;char tmp15;if (fd=open(“mykey“, O_RDWR) = -1) return -1;lock.l_type = F_WRLCK
10、;lock.l_whence = SEEK_SET;lock.l_start = 0;lock.l_len = 10;fcntl(fd, F_SETLKW, printf(“parent lockn“);if(fork()=0)lock.l_type = F_WRLCK;lock.l_whence = SEEK_SET;lock.l_start = 0;lock.l_len = 10;fcntl(fd, F_SETLKW, printf(“child locked.n“);read(fd, tmp, 10);lseek(fd, 0, SEEK_SET);write(fd, tmp+5, 5);
11、write(fd, tmp, 5);lock.l_type= F_UNLCK;fcntl(fd, F_SETLK, printf(“child unlocked.n“);return 0;lseek(fd, 0, SEEK_SET);read(fd, tmp, 10);lseek(fd, 0, SEEK_SET);lock.l_type = F_UNLCK;sleep(2);fcntl(fd, F_SETLK, printf(“parent unlock.n“);return 0;二、使用 lockf 的实现#include #include #include int main()int fd
12、;struct flock lock;char tmp15;if (fd=open(“mykey“, O_RDWR) = -1) return -1;lseek(fd, 0, SEEK_SET);flock(fd, 1, 10);printf(“parent lockn“);if(fork()=0)lseek(fd, 0, SEEK_SET);flock(fd, 1, 10);printf(“child locked.n“);read(fd, tmp, 10);sleep(5);lseek(fd, 0, SEEK_SET);write(fd, tmp+5, 5);write(fd, tmp,
13、5);lseek(fd, 0, SEEK_SET);flock(fd, 0, 10);printf(“child unlocked.n“);return 0;lseek(fd, 0, SEEK_SET);read(fd, tmp, 10);lseek(fd, 0, SEEK_SET);flock(fd, 0, 10);printf(“%s“, tmp);printf(“parent unlock.n“);return 0;三、测试文件more mykey 012345678956789ABCDE实验五、进程及线程管理实验 多线程编程(参考实验指导书 P54)实验六、进程 IPC 通信1-2 组:多进程使用信号通信 P64 (1),参考程序 6.4.13-4 组:多个进程使用有道通信 P64(2),参考程序 6.4.25-7 组:客户和服务器进程使用消息队列进行通信 P65(3),参考程序 6.4.38-10 组:使用共享存储区方式实现多个进程的通信 P65(4),参考程序 6.4.4实验七、UNIX 网络个人网页建设在实验室的 UNIX 服务器上,建立个人网页,主题任选。实验五、进程及线程管理实验多线程编程(参考实验指导书 P54)