Linux程序设计实验报告大作业
实 验 报 告 课程名称: LINUX程序设计 学 院: 计算机学院 专 业: 软件工程 班 级: 14-3 姓 名: 张正锟 学 号: 201401061038 2017年 1月1日 山 东 科 技 大 学 教 务 处 制 实 验 报 告 组别 姓名 张正锟 同组实验者 实验项目名称 实验一 熟悉Linux命令 实验日期 第11周周四9,10节 教师评语 实验成绩 指导教师 一、 实验目的 熟悉并掌握Linux操作系统基本命令 二、 常用的普通命令 1. 了解系统的uname,date,w命令 2. 了解文件的ls和file命令 3. cat,less,head,tail,nl,wc等命令的使用 4. 文本内容查找grep 命令 5. 文件权限的修改chmod,chown,umask 6. 文件夹操作:mkdir,rmdir 三、 用户和组的管理管理 1. 探究用户配置文件/etc/passwd, /etc/shadow /etc/passwd是用户数据库,其中的域给出了用户名、加密口令和用户的其他信息. /etc/shadow是在安装了影子(shadow)口令软件的系统上的影子口令文件。影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对超级用户( r o o t )可读。这使破译口令更困难,以此增加系统的安全性。 2. 探究组配置文件组的配置文件/etc/group, /etc/gshadow 3. id, who, whoami,groups等命令 四、 文件打包与压缩 1. tar压缩和解压 五、 软件包管理 1. 安装软件tree 2. 卸载软件tree 六、 进程管理 1. top命令动态显示进程状态 2. ps命令显示瞬时进程状态 3. Kill命令终止一个进程 用gedit打开一个文件a.cpp并在后台运行,显示的进程号为17271,然后用kill命令杀死这个进程,观察到gedit关闭 七、 实验总结 通过本次实验,熟悉了好多Linux下面的基本命令,可以看出Linux的命令基本上都有好多参数可选,这样就可以用一条命令完成好多任务,大大提高效率。另外还学会了当命令不会使用的时候,可以调用man来查看命令的使用方法。 实 验 报 告 组别 姓名 张正锟 同组实验者 实验项目名称 实验二Shell编程 实验日期 第12周周四9,10节 教师评语 实验成绩 指导教师 一、 实验目的 Ø 掌握Shell命行的运行 Ø 掌握编写和执行Shell程序的步骤 Ø 掌握在Shell中使用参数和使用变量的方法 Ø 掌握表达式比较,循环结构语句和条件结构语句的写法 Ø 掌握在shell脚本中使用函数的方法 二、 简单bash脚本 1. 编写bash脚本 2. 添加执行权限 3. 运行结果 三、 计算器:变量读入和输出 1. 编辑程序 2. 添加可执行权限 3. 运行程序 四、 比较两个数字是否相等 1. 编写程序 2. 添加可执行权限 3. 运行程序 五、 循环计算累加和 1. 编写程序 2. 添加可执行权限 3. 运行程序 6、 利用shell函数计算两数之和 1. 编写程序 2. 添加可执行权限 3. 运行程序 7、 计算数组累乘 1. 编写程序 2. 添加可执行权限 3. 运行程序 8、 实验总结 通过本次实验,我学会了shell中的各种写法,包括流程控制,循环,数组,函数等等,了解到shell在Linux是一种强大的神器,可以批量完成各种操作。 实 验 报 告 组别 姓名 张正锟 同组实验者 实验项目名称 实验三文件操作 实验日期 第13周周四9,10节 教师评语 实验成绩 指导教师 一、 实验目标 1.熟悉cd、date、pwd、cal、who、echo、clear、passwd等常用命令。 2.掌握在用户主目录下对文件进行的操作:复制一个文件、显示文件内容、查找指定内容、排序、文件比较、文件删除等。 3.学会对目录进行管理:创建和删除子目录、改变和显示工作目录、列出和更改文件权限、链接文件等。 二、 文件操作:修改文件权限 设计一个程序,要求把系统中“/etc”目录下的passwd文件权限,设置成文件所有者可读可写,所有其他用户为只读权限。 1. 编写C语言程序 2. 编译执行 3. 查看结果 三、 从终端读写数据 文件的打开可以用open函数,即使原来的文件不存在,也可以用open函数创建文件。在打开或者创建文件时,可以指定文件的属性及用户的权限等参数。 关闭一个打开的文件,用close函数。当一个进程终止时,它所有已打开的文件都由内核自动关闭。 1. 编写C语言程序 2. 查看运行结果 四、文件上锁和锁的释放 1. 题目要求 设计一个程序,要求在“/root”下打开一个名为“5-11file”的文件,如果该文件不存在,则创建此文件。打开后对其加上强制性的写入锁F_WRLCK,按回车后解锁F_UNLCK,然后加上读出锁F_RDLCK,按回车后再解锁F_UNLCK。程序在终端1运行后会显示程序的进程号,再打开终端2,会提示此文件处于锁定状态,此时在终端2可以多按回车,观察程序的运行结果。然后在终端1按回车,等待终端1解锁后,在终端2才可锁定此文件,你可观察到强制性锁是独占状态,当在终端2解锁后,在终端1或2可加读出锁,在读出锁状态终端1或2的运行不需要等待,因为读出锁是处于共享状态,请编写程序并测试程序运行的结果。 2. 分析 主程序先用open函数打开文件“5-11file”,如果该文件不存在,则创建此文件;接着调用自定义函数lock_set:先传递参数“F_WRLCK”给文件“5-11file”加锁,并打印输出给文件加锁进程的进程号,然后先传递参数“F_UNLCK”给文件“5-11file”解锁,并打印输出给文件解锁进程的进程号;在自定义函数lock_set给文件上锁语句前,加上判断文件是否上锁的语句,如果文件已经被上锁,打印输出给文件上锁进程的进程号。 3. 编写C语言程序 4. 执行程序 终端1: 加上写入锁的是: 5403 释放强制性锁: 5403 文件已加上写入锁,其进程号是: 5404 文件已加上写入锁,其进程号是: 5404 文件已加上写入锁,其进程号是: 5404 加上读取