《Linux编程基础》课程 教学大纲

 

  • 课程的性质与目标

《Linux编程基础》是计算机科学与技术、软件工程等本科专业的必修基础课程,本课程主要介绍了Linux操作系统中的常用命令,与Linux系统下的编程方法,目的在于帮助读者掌握Linux操作系统的使用方法与Linux编程初期所需的基础知识,为后期在Linux环境中搭建服务器做铺垫。

二、课程的主要内容及基本要求

第一章   初识Linux2学时)

[知 识 点]

  • Linux的发展、特点和应用领域
  • GUN项目计划
  • POSIX标准
  • Linux开发环境搭建
  • Linux网络配置
  • 远程终端访问
  • 远程文件管理

[重    点]

  • Linux网络配置

[难    点]

  • Linux网络配置
  • 远程终端访问

[基本要求]

  • 了解Linux的发展历史,熟悉其特点与应用领域
  • 成功搭建Linux开发环境
  • 掌握Linux网络配置
  • 掌握通过远程终端访问Linux系统的方法
  • 熟练使用SFTP远程文件管理工具

[实践与练习]

建议跟随教材中展示的方法搭建Linux开发环境,配置网络;使用教材中展示的(或可自行网上下载其他工具)远程终端访问工具和远程文件管理工具访问Linux系统,实现线程文件管理。

第二章   命令与开发工具(5学时)

[知 识 点]

  • 文件处理命令
  • 权限管理命令
  • 网络管理与通信命令
  • 压缩解压命令
  • 帮助命令
  • Vi编辑器的工作模式
  • GCC编译流程
  • GDB调试工具的使用方法

[重    点]

  • 文件处理命令
  • 权限管理命令
  • 网络管理与通信命令
  • Vi编辑器的工作模式
  • GDB调试工具的使用方法

[难    点]

  • GCC编译流程
  • GDB调试工具的使用方法

[基本要求]

  • 掌握常用的文件处理命令
  • 掌握常用的权限管理命令
  • 熟悉网络管理与通信命令
  • 熟练使用压缩解压命令
  • 熟练使用Vi编辑器
  • 了解GCC编译流程,熟练使用GCC编译工具编译程序
  • 掌握GDB调试工具的使用方法

[实践与练习]

建议亲手完成所有案例,掌握Linux常用的命令及开发工具。

第三章   用户与用户组管理(2学时)

[知 识 点]

  • 用户与用户组相关概念
  • 用户管理命令
  • 用户组管理命令
  • 用户切换

[重    点]

  • 用户切换

[难    点]

  • 用户切换

[基本要求]

  • 了解Linux中用户与用户组的相关概念
  • 掌握用户与用户组管理命令
  • 掌握Linux系统中用户切换的方法

[实践与练习]

建议亲手完成所有案例,掌握用户与用户组管理命令,及Linux系统中切换用户的方式。

第四章   Shell编程(5学时)

[知 识 点]

  • Shell概述
  • 重定向、管道、命令连接符
  • Shell变量的分类和定义
  • Shell变量的引用
  • Shell变量的运算
  • Shell条件判断
  • if条件语句
  • select语句
  • case语句
  • for循环
  • while循环
  • until循环
  • Shell脚本调试
  • Shell函数

[重    点]

  • Shell变量的引用
  • Shell变量的运算
  • Shell条件判断

[难    点]

  • Shell变量的引用
  • Shell变量的运算

[基本要求]

  • 熟练运用重定向、管道与命令连接符
  • 掌握Shell变量的定义和引用方法
  • 掌握Shell变量的运算方法
  • 熟练运用Shell中的条件判断语句
  • 掌握Shell中的语句与循环
  • 掌握Shell函数的构造与使用方法
  • 了解Shell脚本的调试方法

[实践与练习]

建议亲手完成所有案例,掌握Shell脚本的编写方法与调试方式。

 

第五章   Linux文件系统与操作(6学时)

[知 识 点]

  • 磁盘结构与磁盘的逻辑分区
  • 目录结构
  • inode与dentry
  • 磁盘分区命令fdisk
  • 文件系统创建命令mkfs
  • ext2文件系统布局
  • 数据块寻址方式
  • 虚拟文件系统
  • 分区挂载
  • Linux文件类型
  • 文件描述符
  • 文件I/O
  • 文件操作函数

[重    点]

  • 文件I/O

[难    点]

  • 磁盘分区命令fdisk
  • 文件系统创建命令mkfs
  • ext2文件系统布局
  • 数据块寻址方式

[基本要求]

  • 了解磁盘的结构与逻辑分区
  • 熟悉Linux系统中的目录结构
  • 熟悉Linux文件的inode与dentry属性
  • 熟悉fdisk命令与mkfs命令
  • 掌握ext2文件系统布局
  • 掌握文件系统中数据块寻址的方式
  • 了解将分区挂载到文件系统的方法
  • 熟悉Linux系统中的文件类型
  • 掌握Linux系统中实现I/O操作的方法

[实践与练习]

建议亲手完成所有案例,掌握Linux文件系统的布局结构与相关的I/O操作。

第六章   Linux进程管理(10学时)

[知 识 点]

  • 进程处理机制
  • 进程属性
  • 进程创建方法
  • 父子进程执行流程
  • exec函数族
  • 进程退出
  • 进程同步
  • 进程管理命令

[重    点]

  • 进程创建方法
  • exec函数族
  • 进程同步

[难    点]

  • 父子进程执行流程
  • 进程同步

[基本要求]

  • 掌握进程属性与进程处理机制
  • 熟练使用fork()、exec等系统调用创建进程,处理系统请求
  • 掌握实现进程同步的方法
  • 熟悉终端常用的进程管理命令

[实践与练习]

建议亲手完成所有案例,掌握Linux进程处理机制,以及在Linux系统中创建进程、管理进程的方法。

第七章   信号(8学时)

[知 识 点]

  • 信号的分类与产生方式
  • 系统调用产生信号
  • 软件条件产生信号
  • kill命令产生信号
  • 信号屏蔽机制
  • 信号捕获
  • 进程同步
  • 时序竞态
  • SIGCHLD信号

[重    点]

  • 信号捕获
  • 进程同步

[难    点]

  • 信号捕获
  • 进程同步
  • 时序竞态

 [基本要求]

  • 了解信号的分类与产生方式
  • 掌握不同情况下信号的产生方法
  • 掌握屏蔽、捕捉信号的方法
  • 熟练处理程序中产生的信号
  • 熟练掌握利用信号机制实现进程同步的方法

[实践与练习]

建议亲手完成所有案例,掌握Linux系统中处理信号的方法,并能熟练运用信号实现进程同步,解决时序竞态问题。

第八章   进程间通信(8学时)

[知 识 点]

  • 匿名管道
  • popen()/pclose()
  • 命名管道
  • 消息队列模型
  • 消息队列函数接口
  • 信号量模型
  • 信号量函数接口
  • 共享内存模型
  • 共享内存函数接口

[重    点]

  • 命名管道
  • 消息队列函数接口
  • 信号量函数接口
  • 共享内存函数接口

[难    点]

  • 信号量模型

[基本要求]

  • 了解进程间通信的常用方式
  • 掌握使用管道、消息队列、信号量以及共享内存实现进程间通信的方法

[实践与练习]

建议亲手完成所有案例,掌握使用管道、消息队列、信号量以及共享内存实现进程间通信的方法。

第九章  线程(6学时)

[知 识 点]

  • 线程的定义
  • 创建线程
  • 线程退出方式
  • 线程终止
  • 线程挂起
  • 线程分离
  • 线程属性
  • 互斥锁
  • 条件变量
  • 信号量

[重    点]

  • 创建线程
  • 互斥锁
  • 条件变量
  • 信号量

[难    点]

  • 互斥锁
  • 条件变量
  • 信号量

[基本要求]

  • 了解线程的定义
  • 掌握创建线程、退出线程、终止线程、挂起线程的方法
  • 熟悉线程的属性,掌握通过线程属性设置线程状态的方法
  • 掌握使用互斥锁、条件变量与信号量实现线程同步的方法

[实践与练习]

建议亲手完成所有案例,熟悉线程的定义、属性,掌握创建线程、退出线程、终止线程、挂起线程的方法,以及使用互斥锁、条件变量与信号量实现线程同步的方法。

第十章   socket编程(4学时)

[知 识 点]

  • 计算机网络体系结构
  • 软件系统体系结构
  • socket编程接口
  • socket通信流程
  • IP地址转换
  • sockaddr数据结构
  • 基于C/S结构的TCP通信
  • 基于C/S结构的UDP通信
  • socket本地通信

[重    点]

  • socket通信流程
  • 基于C/S结构的TCP通信
  • 基于C/S结构的UDP通信

[难    点]

  • socket通信流程

[基本要求]

  • 熟悉计算机网络体系结构
  • 掌握socket编程接口与基于不同软件系统体系结构的socket通信流程
  • 了解网络字节序、IP地址转换、sockaddr数据结构等知识
  • 熟练使用socket编程接口实现基于C/S结构的TCP、UDP通信
  • 熟悉socket本地通信

[实践与练习]

建议亲手完成所有案例,熟悉计算机网络体系结构,掌握socket编程接口与基于不同软件体系结构的socket通信流程,了解网络字节序、IP地址转换、sockaddr数据结构等知识,并能熟练使用socket编程接口实现基于C/S结构的TCP、UDP通信以及基于socket的本地通信。

第十一章   高并发服务器(2学时)

[知 识 点]

  • 多进程并发服务器
  • 多线程并发服务器
  • select模型
  • poll模型
  • epoll模型
  • epoll的工作模式
  • 线程池

[重    点]

  • select模型
  • epoll模型

[难    点]

  • select模型

[基本要求]

  • 了解多种服务器的工作机制
  • 掌握使用select、epoll模型搭建并发服务器的方法

[实践与练习]

建议亲手完成所有案例,了解多种服务器的工作机制与特点,熟悉多进程、多线程、poll服务器的搭建方法,掌握使用select、epoll搭建高并发服务器的方法。

四、考核模式与成绩评定办法

本课程为考试课程,期末考试采用百分制的闭卷考试模式。学生的考试成绩由平时成绩(30%)和期末考试(70%)组成,其中,平时成绩包括出勤(5%)、作业(5%)、实验和上机成绩(20%)。

五、选用教材和主要参考书

本大纲专为教材《Linux编程基础》设计。

六、大纲说明

本大纲根据教材《Linux编程基础》进行设计,将教学环节分为42个授课学时和18个上机学时,目的在于使学生在学习理论知识的过程中能及时进行实践,保证学生切实牢固地掌握所学知识。

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
前言 10 场景说明 11 基础知识简介 14 Linux 14 Linux产生与发展 14 Linux特点和优势 15 Shell 16 Shell脚本语言与编译型语言的差异 17 Shell分类 18 Shell使用 19 项目一 初识Linux Shell 20 [学习目标] 20 任务1.1 构建开发环境 22 任务1.2 vi/vim编辑器 33 1.2.1 vim使用实例 34 1.2.2 vim按键说明 36 任务1.3 Shell常用命令 41 1.3.1 基础命令 41 1.3.2 文件、目录操作命令 42 1.3.3 系统管理命令 52 1.3.4 关机/重启/退出 53 1.3.5 安装操作命令 53 1.3.6 用户操作命令 54 1.3.7 网络下载命令 55 1.3.8 服务操作命令 57 任务1.4 Shell脚本 58 1.4.1 第一个shell脚本:Hello World 58 1.4.2 脚本介绍 59 1.4.3 shell程序结构 59 1.4.4 shell脚本运行 60 任务1.5 Shell案例:打印有色彩的文本 61 任务1.6 Shell案例:图案打印 62 练习(每题10分,共计100分) 66 项目二 Shell变量 67 [学习目标] 67 任务2.1 Linux环境变量 68 2.1.1 查看环境变量 69 任务2.2 Shell变量 70 2.2.1 定义变量 70 2.2.2 使用变量 70 2.2.3 只读变量 71 2.2.4 删除变量 72 任务2.3 特殊符号 72 任务2.4 Shell案例:显示系统信息: 78 练习(每题12.5分,共计100分) 80 项目三 Shell传递参数 81 [学习目标] 81 任务3.1 Shell传递参数 82 任务3.2 Shell案例:参数比较 85 任务3.3Shell案例:通过参数描述变量 86 练习(前两题每题30分,第三题40分,共计100分) 87 项目四 Shell数组 89 [学习目标] 89 任务4.1 定义数组 90 任务4.2 使用数组 90 任务4.3 Shell案例:数组的使用 92 练习(100分) 95 项目五 Shell运算符 96 [学习目标] 96 任务5.1 Shell基本运算符 97 5.1.1 运算符 97 5.1.2 算术运算符 97 5.1.3 关系运算符 99 5.1.4 布尔运算符 101 5.1.5 逻辑运算符 103 5.1.6 字符串运算符 104 5.1.7 文件测试运算符 106 任务5.2 Shell案例:计算器 109 练习(每题25分,共计100分) 111 项目六 Shell命令输出 112 [学习目标] 112 任务6.1 Shell echo命令 113 任务6.2 Shell printf命令 116 任务6.3 Shell test命令 119 任务6.4 Shell案例:查看系统资源使用情况 122 练习(每题20分,共计100分) 125 项目七 Shell流程控制 126 [学习目标] 126 任务7.1 Shell流程控制 127 7.1.1 if 判断语句 127 7.1.2 for 循环语句 130 7.1.3 while 循环语句 131 7.1.4 until 循环语句 134 7.1.5 case多选语句 135 7.1.6 跳出循环体 137 任务7.2 Shell案例:重复执行命令和简单计算器 139 任务7.3 Shell案例:使用三种循环结构打印九九乘法表 141 练习(前两题每题30分,第三题40分,共计100分) 144 项目八 Shell函数 146 [学习目标] 146 任务8.1 Shell函数 147 8.1.1 Shell中函数的定义 147 8.1.2 函数参数 150 任务8.2 Shell案例 151 8.2.1 指定多个文件的行数 151 8.2.2 当前目录的所有文件 153 练习(每题50分,共计100分) 156 项目九 Shell输入/输出重定向 158 [学习目标] 158 任务9.1 linux文件描述符 159 任务9.2 Shell输入/输出重定向 160 9.2.1 输出重定向 160 9.2.2 输入重定向 163 9.2.3 重定向深入讲解 164 任务9.2 Shell案例:通过重定向测试批量添加ip 166 练习(每题25分,共计100分) 169 项目十 Shell文件包含 171 [学习目标] 171 任务10.1 Shell文件包含 172 任务10.2 Shell案例:查找最大文件 172 练习(每题50分,共计100分) 174 项目十一 Shell文本处理命令 175 [学习目标] 175 任务11.1 学习和使用grep 176 任务11.2 学习和使用sed 179 任务11.3 学习和使用cut 183 任务11.4 学习和使用awk 185 练习(第一题10分,第2-7每题15分,共计100分) 188 项目十二 Shell的调试 189 [学习目标] 189 任务12.1 使用trap命令 190 任务12.2 使用tee命令 192 任务12.3 使用“调试钩子” 193 任务12.4 使用Shell的执行选项 194 练习(每题50分,共计100分) 196 项目十三 Shell综合案例一(lnmp+wordpress) 197 [学习目标] 197 任务13.1 手动安装Linux Nginx Mysql PHP和WordPress 198 13.1.1 准备工作 198 13.1.2 安装Mysql5.6.29 199 13.1.3 安装PHP5.5.12 202 13.1.4 安装Nginx1.10 205 13.1.5 安装WordPress 206 13.1.6 启动网页 207 任务13.2 脚本安装Linux Nginx Mysql PHP 和WordPress 207 13.2.1 初始化安装脚本编写 207 13.2.2 Mysql安装脚本的编写 209 13.2.3 PHP安装脚本的编写 211 13.2.4 Nginx安装脚本的编写 213 13.2.5 WordPress安装脚本的编写 214 13.2.6 验证wordpress 216 练习(每题50分,共计100分) 218 项目十四 shell综合案例二(安装Openstack) 219 [学习目标] 219 任务14.1 手动安装Openstack 220 什么是Openstack 220 14.1.1基本环境准备 222 14.1.2 安装mysql数据库服务 225 14.1.3 安装keystone认证服务 226 14.1.4 安装glance镜像服务 230 14.1.5 安装nova计算服务 233 14.1.6 安装neutron网络服务 238 14.1.7 安装dashboard服务 248 任务14.2 脚本安装openstack 250 14.2.1 基本环境脚本的编写 255 14.2.2 mysql脚本的编写 256 14.2.3 keystone脚本的编写 258 14.2.4 glance脚本的编写 263 14.2.5 nova脚本的编写 266 14.2.6 neutron脚本的编写 270 14.2.7 dashboard脚本的编写 279 14.2.8 验证登录,使用openstack 280 附录Shell编码规范说明 295 1. 什么时候使用shell 295 2.Shell文件和解释器调用 295 3.环境 296 4.注释 296 5.格式 298 6.特性及错误 304 7.命名转换 308 8.调用命令 311

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向蜗牛一样的笑开研

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值