《操作系统》实验指导书/实验九:系统运维管理 实验九:系统运维管理 实验目的 1、掌握Linu系统下常用的监控命令; 2、掌握She编程的基本语法 3、掌握使用She编程实现系统运维的方法。 实验学时 2学时 三、实验类型 创新性 四、实验需求 1、硬件 每人配备计算机1台,不低于双核CPU、8G内存、500GB硬盘 2、软件 Windows操作系统,安装 VirtualBox虚拟化软件,安装Puty管理终端软件。 3、网络 计算机使用固定P地址接入局域网,并支持对互联网的访问,虚拟主机可通过NAT方 式访问互联网。 4、工具 提供第三方FTP服务,虚拟主机能够访问该FTP服务 五、实验任务 1、完成 Linux基本运维命令的应用:top、 loop、 ftop、san 2、编写 Linux shel脚本,完成系统日志中用户登录过程分析 3、编写 Linux shel脚本,完成系统指定目录的本地与远程定时数据备份。 4、编写 Linux shell脚本,完成批量化网站的创建与发布。 六、实验内容及步骤 1、使用监控命令进行系统监控 (1) top 使用top命令查看系统运行状态,并分析系统进程变化 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第1页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 1 页 实验九:系统运维管理 一、实验目的 1、掌握 Linux 系统下常用的监控命令; 2、掌握 Shell 编程的基本语法; 3、掌握使用 Shell 编程实现系统运维的方法。 二、实验学时 2 学时 三、实验类型 创新性 四、实验需求 1、硬件 每人配备计算机 1 台,不低于双核 CPU、8G 内存、500GB 硬盘。 2、软件 Windows 操作系统,安装 VirtualBox 虚拟化软件,安装 Putty 管理终端软件。 3、网络 计算机使用固定 IP 地址接入局域网,并支持对互联网的访问,虚拟主机可通过 NAT 方 式访问互联网。 4、工具 提供第三方 FTP 服务,虚拟主机能够访问该 FTP 服务。 五、实验任务 1、完成 Linux 基本运维命令的应用:top、iotop、iftop、sar; 2、编写 Linux Shell 脚本,完成系统日志中用户登录过程分析; 3、编写 Linux Shell 脚本,完成系统指定目录的本地与远程定时数据备份。 4、编写 Linux Shell 脚本,完成批量化网站的创建与发布。 六、实验内容及步骤 1、使用监控命令进行系统监控 (1)top 使用 top 命令查看系统运行状态,并分析系统进程变化
《操作系统》实验指导书/实验九:系统运维管理 top 图9-1系统运行状态 请分析top命令下各字段的含义,并将结果写入表9-1 表9-1top命令含义 ①使用yum安装 loop ②使用 loop查看磁盘O使用状况 1tch叠d一em==deae1a11ze 图9-2磁盘o使用状况 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第2页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 2 页 # top 请分析 top 命令下各字段的含义,并将结果写入表 9-1。 表 9-1 top 命令含义 (2)iotop ①使用 yum 安装 iotop # yum install iotop ②使用 iotop 查看磁盘 I/O 使用状况 # iotop 图 9-1 系统运行状态 图 9-2 磁盘 I/O 使用状况
《操作系统》实验指导书/实验九:系统运维管理 ③使用 loop-0查看磁盘正在产生IO的进程或线程 t loto -o srtp-server 2719 be/4 root 图9-3正在产生磁盘o的进程 请分析 loop命令下各字段的含义,并将结果写入表9-2。 表92 ioop命令含义 (3) ftop ①使用yum安装所需依赖包 yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel ②访问ifop官网,下载ifop安装包 http://www.ex-parrot.com/-pdw/iftop/download/iftop-0.17.tar.gz ③使用 Filezilla上传ifop安装包至home目录 ④使用yum安装gcc++ yum install acc-c++ ⑤解压ifop0.17argz,安装 ftop #tar -xvzf /home/iftop-0. 17. tar. gz #cd iftop-0 17 ./configure #make & make install ⑥使用ifop查看接口流量 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第3页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 3 页 ③使用 iotop -o 查看磁盘正在产生 I/O 的进程或线程 # iotop -o 请分析 iotop 命令下各字段的含义,并将结果写入表 9-2。 表 9-2 iotop 命令含义 (3)iftop ①使用 yum 安装所需依赖包 # yum install flex byacc libpcap ncurses ncurses-devel libpcap-devel ②访问 iftop 官网,下载 iftop 安装包 http://www.ex-parrot.com/~pdw/iftop/download/iftop-0.17.tar.gz ③使用 FileZilla 上传 iftop 安装包至/home 目录 ④使用 yum 安装 gcc-c++ #yum install gcc-c++ ⑤解压 iftop-0.17.tar.gz,安装 iftop #tar -xvzf /home/iftop-0.17.tar.gz #cd iftop-0.17 #./configure #make && make install ⑥使用 iftop 查看接口流量 图 9-3 正在产生磁盘 I/O 的进程
《操作系统》实验指导书/实验九:系统运维管理 ftop -i enpOs3 可可可qv 72.16.124.66 Hasten-DNs→ Master TOTAL: 图9-4enp0s3接口流量 (4)sar ①使用yum安装sar #yum install sysstat ②使用sar查看CPU使用信息,每隔1秒,共输出6次 16 ③使用sar查看CPU所有核心运行数据,每隔1秒,共输出6次 #sar-P ALL 1 6 ④使用sar每隔1秒记录CPU的使用情况,直到11点02分,数据将保存到 /opt/cpu.lo g文件中 #sar 1-u -e 11: 02: 00>/opt/cpu. log 记录当前CPU的使用情况,将结果写入表9-3,并分析各字段含义 表93cpu使用情况 ⑤使用sar每隔1秒记录内存的使用情况,直到11点02分,数据将保存到/ opt/memor log文件中 #sar 1 -r-e 11: 02: 00>/opt/memory. log 记录当前内存的使用情况,将结果写入表9-4,并分析各字段含义。 表94内存使用情况 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第4页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 4 页 # iftop -i enp0s3 (4)sar ①使用 yum 安装 sar #yum install sysstat ②使用 sar 查看 CPU 使用信息,每隔 1 秒,共输出 6 次 #sar -u 1 6 ③使用 sar 查看 CPU 所有核心运行数据,每隔 1 秒,共输出 6 次 #sar -P ALL 1 6 ④使用 sar 每隔 1 秒记录 CPU 的使用情况,直到 11 点 02 分,数据将保存到/opt/cpu.lo g 文件中 #sar 1 -u -e 11:02:00 > /opt/cpu.log 记录当前 CPU 的使用情况,将结果写入表 9-3,并分析各字段含义。 表 9-3 cpu 使用情况 ⑤使用 sar 每隔 1 秒记录内存的使用情况,直到 11 点 02 分,数据将保存到/opt/memor y.log 文件中 #sar 1 -r -e 11:02:00 > /opt/memory.log 记录当前内存的使用情况,将结果写入表 9-4,并分析各字段含义。 表 9-4 内存使用情况 图 9-4 enp0s3 接口流量
《操作系统》实验指导书/实验九:系统运维管理 ⑥使用sar每隔1秒记录网络的使用情况,直到11点02分,数据将保存到/ opt/memor ylog文件中 sar 1-n DEv -e 11: 02: 00>/opt/network log 记录当前网络使用情况,并将结果写入表9-5,并分析各字段含义。 表95网络使用情况 2、使用Shel编写脚本进行系统维护 (1)编写 Shell脚本,查看系统用户登录日志 Centos中记录登录信息的日志文件如下表所示 表1-1登录信息日志一览表 登录日志类型 日志存储位置 当前正在登录系统的用户信息 /var/run/utmp 当前正在登录和历史登录系统的用户信息/var/log/wtmp 最后一次登录的用户信息 /var/log/btmp 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第5页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 5 页 ⑥使用 sar 每隔 1 秒记录网络的使用情况,直到 11 点 02 分,数据将保存到/opt/memor y.log 文件中。 #sar 1 -n DEV -e 11:02:00 > /opt/network.log 记录当前网络使用情况,并将结果写入表 9-5,并分析各字段含义。 表 9-5 网络使用情况 2、使用 Shell 编写脚本进行系统维护 (1)编写 Shell 脚本,查看系统用户登录日志 Centos 中记录登录信息的日志文件如下表所示。 表 1-1 登录信息日志一览表 登录日志类型 日志存储位置 当前正在登录系统的用户信息 /var/run/utmp 当前正在登录和历史登录系统的用户信息 /var/log/wtmp 最后一次登录的用户信息 /var/log/btmp
《操作系统》实验指导书/实验九:系统运维管理 wtmp和utmp文件是二进制文件,可使用who、w、 users、last和ac来查看两个文件 包含的信息 编写 Shell脚本,将用户登录历史信息导入到文本中。 logPath="/var/log/wtmp wavePath="/home wwho S(logPath) >>$(savePath)/userLogin. txt (2)编写She脚本,实现指定目录的定时备份 ①日志获取 将/arog/下的系统日志备份到临时目录,将该目录进行日志压缩和上传 #!/bin/bash ##定义日志存放路径 path="/var/log ##创建临时文件夹 time=date +%Y%m%d mkdir S(zip Pathl/S(time]-"log \cp -r Stpath)/* $(zipPath)/S(time)-"log"/ ②日志压缩 将临时目录中日志进行压缩,压缩后删除临时目录文件,文件压缩使用“zip”命令。 ①使用yum安装zip um ns ②临时目录压缩 zip -r Sitime)-"log. zip"S(zipPathl/S(time)-"log/ ##删除原有的目录文件 m -rf S(zip Path)/S(time)-"log/ ③使用yum安装fp #yum install ftp ④上传压缩文件 ##将当天的日志文件进行上传 open FTP服务器P地址 user User Password if ![-f /S(time) then mkdir /S(time) cd S(time) put $itime)-"log. zip ⑤本地保存 ##将文件移到本地文件夹下进行保存 SttimeJ-"log. zip"$(pathy/log ##判断本地LoG日志文件总个数,大于15时自动删除之前的文件 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第6页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 6 页 wtmp 和 utmp 文件是二进制文件,可使用 who、w、users、last 和 ac 来查看两个文件 包含的信息。 编写 Shell 脚本,将用户登录历史信息导入到文本中。 #!/bin/bash logPath="/var/log/wtmp" savePath="/home" \who ${logPath} >> ${savePath}/"userLogin.txt (2)编写 Shell 脚本,实现指定目录的定时备份 ①日志获取 将/var/log/下的系统日志备份到临时目录,将该目录进行日志压缩和上传。 #!/bin/bash ##定义日志存放路径 path="/var/log" zipPath="/home" ##创建临时文件夹 time=`date +%Y%m%d` mkdir ${zipPath}/${time}-"log" \cp -r ${path}/* ${zipPath}/${time}-"log"/ ②日志压缩 将临时目录中日志进行压缩,压缩后删除临时目录文件,文件压缩使用“zip”命令。 ①使用 yum 安装 zip。 #yum install zip ②临时目录压缩 zip -r ${time}-"log.zip" ${zipPath}/${time}-"log"/ ##删除原有的目录文件 rm -rf ${zipPath}/${time}-"log"/ ③使用 yum 安装 ftp #yum install ftp ④上传压缩文件 ##将当天的日志文件进行上传 ftp -n <<- EOF open FTP 服务器 IP 地址 user User Password bin if ![ -f /${time} ] ;then mkdir /${time} fi cd ${time} put ${time}-"log.zip" bye EOF ⑤本地保存 ##将文件移到本地文件夹下进行保存 mv ${time}-"log.zip" ${path}/log ##判断本地 LOG 日志文件总个数,大于 15 时自动删除之前的文件
《操作系统》实验指导书/实验九:系统运维管理 cd Slpath)/log, File Num=(ls -l grep A-I wc-1) ReservedNum=15 while(( S(File Num)>$(ReservedNum) ) ##取最旧的文件,*柯以改为指定文件类型 OldFile=S(ls -rt ** head -1 rm-f $(pathy/log/$(Old File) let"FileNum-" one ⑥日志清空 ##清除本地存放日志的初始日志 rm -rf S(path)/data/query/ ##创建目录,目录名称可自定义设置 mkdir-p $(pathy/data/query ##创建日志文件,日志文件名称可自定义设置 touch$path/data/ query/名称log ##将新创建的日志文件赋予权限 chown -R named Sipath)/data/ chgrp -R named $ipath/data/#取最旧的文件,**可以改为指定文件类型 Old File=S(ls -rt** head-1 rm -f $)/log/$(Old File) let "FileNum- ⑦定时任务 通过 Linux下定时任务定期执行shel)脚本,以实现日志每天定时(每天晚上2359)保 存备份,将定时任务写入 letc/crontab文件下,其操作命令如下所示 vi /etc/crontab root/bin/bash脚本存放路 径/file.sh 将完整的 Shell脚本写入表9-6中 表96网络使用情况 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第7页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 7 页 cd ${path}/log/ FileNum=$(ls -l | grep ^- | wc -l) ReservedNum=15 while(( ${FileNum} > ${ReservedNum} )) do ##取最旧的文件,*.*可以改为指定文件类型 OldFile=$(ls -rt *.* | head -1) rm -f ${path}/log/${OldFile} let "FileNum--" done ⑥日志清空 ##清除本地存放日志的初始日志 rm -rf ${path}/data/query/* ##创建目录,目录名称可自定义设置 mkdir –p ${path}/data/query ##创建日志文件,日志文件名称可自定义设置 touch ${path}/data/query/名称.log ##将新创建的日志文件赋予权限 chown -R named ${path}/data/ chgrp -R named ${path}/data/#取最旧的文件,*.*可以改为指定文件类型 OldFile=$(ls -rt *.* | head -1) rm -f ${path}/log/${OldFile} let "FileNum--" done ⑦定时任务 通过 Linux 下定时任务定期执行 shell 脚本,以实现日志每天定时(每天晚上 23.59)保 存备份,将定时任务写入/etc/crontab 文件下,其操作命令如下所示。 # vi /etc/crontab 59 23 * * * root /bin/bash 脚本存放路 径/file.sh 将完整的 Shell 脚本写入表 9-6 中。 表 9-6 网络使用情况
《操作系统》实验指导书/实验九:系统运维管理 (3)编写 Shell脚本,实现网站创建 ① Apache安装 使用yum命令安装 Apache服务,并设置服务自动开机启动,其安装命令如下。 yuminstallhttpd #systemctlstarthttpd #tsystemctlenablehttpd ②配置虚拟目录并引用 本次实验需发布10000个网站,每个网站需创建一个配置文件,将所有网站配置文件放 入虚拟目录中,其操作命令如下 mkdir/etc/httpd/conf.d/vhost 创建虚拟目录完成后,需要在 Apache的主配置文件中进行引用才能实现对每个网站的 配置文件加载,其操作方法是在配置文件/etc/httpd/conf/httpd.conf末尾添加如下命令。 IncludeOptional conf d/vhost/*.conf ③安全配置 关闭系统 SELinux安全访问控制,本次实验通过Aas网站虚拟目录方法实现10000个 网站的创建,默认使用80端口,所以修改防火墙配置运行TCP/⑧0通过防火墙,其操作命令 ##将SEL|NUX= enforcing改为SEL|NUX= disabled ##配置 SELinux文件后,需重启操作系统 ##重启完成后修改防火墙规则 #f firewall-cmd--zone=public --add-port=80/tcp--permanent firewall-cmd --reload ③编写She|脚本 ●编写She|脚本,使用循环方法,创建10000个网站目录,并将每个网站下创建1个 ndex html首页,并将展示出“这是she生成的第XX个网页”内容,其操作命令如下 htmlPath="/var/www/html Arm -rf S(html Path/* for i in seq 1 10000 website Name="website"Si \cd ShtmlPath) echo"">S()/S(website Name)/index. html echo" shell生成HTML文件这是she成的第$个网页">>${ htmlPath}/$tweb site Name)/index. html echo"'>> S(htmlPath)/$(websiteName)/index. html ●编写She|脚本,使用循环方法,为10000个网站创建虚拟配置文件,每个网站创建 虚拟目录,并将配置文件放入在etc/httpd/conf.d/vhost虚拟目录中,其操作命令如下。 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第8页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 8 页 (3)编写 Shell 脚本,实现网站创建 ①Apache 安装 使用 yum 命令安装 Apache 服务,并设置服务自动开机启动,其安装命令如下。 #yum install httpd #systemctl start httpd #systemctl enable httpd ②配置虚拟目录并引用 本次实验需发布 10000 个网站,每个网站需创建一个配置文件,将所有网站配置文件放 入虚拟目录中,其操作命令如下。 # mkdir /etc/httpd/conf.d/vhost 创建虚拟目录完成后,需要在 Apache 的主配置文件中进行引用才能实现对每个网站的 配置文件加载,其操作方法是在配置文件/etc/httpd/conf/httpd.conf 末尾添加如下命令。 IncludeOptional conf.d/vhost/*.conf ③安全配置 关闭系统 SELinux 安全访问控制,本次实验通过 Alias 网站虚拟目录方法实现 10000 个 网站的创建,默认使用 80 端口,所以修改防火墙配置运行 TCP/80 通过防火墙,其操作命令 如下。 # vi /etc/selinux/config ##将 SELINUX=enforcing 改为 SELINUX=disabled SELINUX=disabled ##配置 SELinux 文件后,需重启操作系统 # reboot ##重启完成后修改防火墙规则 # firewall-cmd --zone=public --add-port=80/tcp --permanent # firewall-cmd --reload ③编写 Shell 脚本 ●编写 Shell 脚本,使用循环方法,创建 10000 个网站目录,并将每个网站下创建 1 个 index.html 首页,并将展示出“这是 shell 生成的第 XX 个网页”内容,其操作命令如下。 htmlPath="/var/www/html" \rm -rf ${htmlPath}/* for i in `seq 1 10000` do websiteName="website"$i \cd ${htmlPath} \mkdir ${websiteName} \chmod -R 777 ${websiteName} echo "" > ${htmlPath}/${websiteName}/index.html echo "shell 生成 HTML 文件" >> ${htmlPath}/${websiteName}/index.html echo "这是 shell 生成的第$i 个网页" >> ${htmlPath}/${web siteName}/index.html echo "" >> ${htmlPath}/${websiteName}/index.html done ●编写 Shell 脚本,使用循环方法,为 10000 个网站创建虚拟配置文件,每个网站创建 虚拟目录,并将配置文件放入在/etc/httpd/conf.d/vhost 虚拟目录中,其操作命令如下
《操作系统》实验指导书/实验九:系统运维管理 httpdconfdpath="/etc/httpd/conf.D/vhost Arm-rfS(httpdconfdpathh/ website ConfName="website ConfsiportNum)". conf echo'alias/websiteSj(htmlpath)/websItesj>>s(httpdconfdpat h)/S(website ConfName) echo>>s(httpdconfdpat h)/S(website ConfNamel echo"allowoverridealL">>s(httpdconfdpath)/s(WebsiteConfnam echorequireallgranted>>$(httpdconfdpath)/s(websiteConfn amel echo"">> s(hTtpdconfdpath)/s(website confname) ④服务重启 网站和配置文件生成后,需重启htpd服务,其操作命令如下。 #systemctlrestarthttpd ⑤测试访问 在本地浏览器中可输入网站地址:htp/P地址/ebs(访问为第999个网站, 虚拟目录名称为 website+第N个网站),验证网站是否创建成功,并将结果填写至表9-7中。 表97网站访问测试 七、实验扩展 1、系统监控 (1)除了上述列举的监控命令,还有哪些监控命令?其主要功能是什么? (2)常用的系统监控软件有哪些?并简要说出其主要特点 (3)除了编写Shel脚本进行系统运维外,还有哪些系统自动化运维工具?并简要说 出其主要特点。 2、 Shell (1) Shell是否有数据类型?能否可将字符型数据转换为整型数据? (2)Shel|常见的数据结构有哪些? 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第9页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 9 页 httpdConfdPath="/etc/httpd/conf.d/vhost" \rm -rf ${httpdConfdPath}/* for j in `seq 1 10000` do websiteConfName="websiteConf${portNum}".conf echo "Alias /website$j ${htmlPath}/website$j" >> ${httpdConfdPat h}/${websiteConfName} echo "" >> ${httpdConfdPat h}/${websiteConfName} echo "AllowOverride All" >> ${httpdConfdPath}/${websiteConfNam e} echo "Require all granted" >> ${httpdConfdPath}/${websiteConfN ame} echo "" >> ${httpdConfdPath}/${websiteConfName} done ④服务重启 网站和配置文件生成后,需重启 httpd 服务,其操作命令如下。 # systemctl restart httpd ⑤测试访问 在本地浏览器中可输入网站地址:http://IP 地址/website9999(访问为第 9999 个网站, 虚拟目录名称为 website+第 N 个网站),验证网站是否创建成功,并将结果填写至表 9-7 中。 表 9-7 网站访问测试 七、实验扩展 1、系统监控 (1)除了上述列举的监控命令,还有哪些监控命令?其主要功能是什么? (2)常用的系统监控软件有哪些?并简要说出其主要特点。 (3)除了编写 Shell 脚本进行系统运维外,还有哪些系统自动化运维工具?并简要说 出其主要特点。 2、Shell (1)Shell 是否有数据类型?能否可将字符型数据转换为整型数据? (2)Shell 中常见的数据结构有哪些?
《操作系统》实验指导书/实验九:系统运维管理 (3) Shell脚本是否可以编译、封装、加密? (4) Shell脚本程序如何进行知识产权保护? 3、自动化运维 (1)假如有1000台 Linux服务器,如何进行高效率的系统升级? (2)假如有1000台 Linux服务器,数万个网站服务,如何进行高效率的数据备份? 信息管理与信息系统教研室/阮晓龙/13938213680/共10页,第10页
《操作系统》实验指导书 / 实验九:系统运维管理 信息管理与信息系统教研室 / 阮晓龙 / 13938213680 / 共 10 页,第 10 页 (3)Shell 脚本是否可以编译、封装、加密? (4)Shell 脚本程序如何进行知识产权保护? 3、自动化运维 (1)假如有 1000 台 Linux 服务器,如何进行高效率的系统升级? (2)假如有 1000 台 Linux 服务器,数万个网站服务,如何进行高效率的数据备份?