Linux报告笔记

一、初级部分

初级题目:

用shell 脚本监控系统的各项参数,包括操作系统版本、内核版本、主机名、登录用户、内存和磁盘使用情况等。并可以将脚本加入系统环境中,可以直接在终端里执行。

需求分析

Linux系统中,并没有直接直白的查看系统版本,内核版本,内存磁盘使用状态的方式。本次实验,我可以通过调用文件的方式,将当前的系统状态直接输出,达到监控系统状态的目的。同时将脚本加入环境中,可以在任何目录中输出状态,达到方便快捷的目的。

题目分析:

调用ubuntu系统的文件 输出ubuntu当前系统的各种状态。在shell脚本运行良好后,对环境变量path加入shell脚本所在的目录,以实现在终端内直接执行的功能。

关键调用命令:

uname -s:显示操作系统名称
uname -r:显示操作系统发行编号
uname -m:显示电脑类型
cat:连接文件并打印到屏幕上 此处用来显示文件内容 调取系统自带文件来输出信息
例:cat /proc/meminfo 输出内存使用状态

代码

#!/bin/bash
function get_system_version()
{
    echo "==================================="
    OS=`uname -s`
    REV=`uname -r`
    MACH=`uname -m`
    KERNEL=`uname -r`
        if [ -f /etc/SuSE-release ] ; then
            DIST=`cat /etc/SuSE-release | tr "\n" ' '| sed s/VERSION.*//`
            REV=`cat /etc/SuSE-release | tr "\n" ' ' | sed s/.*=\ //`
        elif [ -f /etc/mandrake-release ] ; then
            DIST='Mandrake'
            PSUEDONAME=`cat /etc/mandrake-release | sed s/.*\(// | sed s/\)//`
            REV=`cat /etc/mandrake-release | sed s/.*release\ // | sed s/\ .*//`
        elif [ -f /etc/os-release ]; then
            DIST=`awk -F "PRETTY_NAME=" '{print $2}' /etc/os-release | tr -d '\n"'`
        elif [ -f /etc/debian_version ] ; then
            DIST="Debian `cat /etc/debian_version`"
            REV=""

        fi
        if ${OSSTR} [ -f /etc/UnitedLinux-release ] ; then
            DIST="${DIST}[`cat /etc/UnitedLinux-release | tr "\n" ' ' | sed s/VERSION.*//`]"
        fi
        OSSTR="${OS} ${DIST} ${REV}(${PSUEDONAME} ${KERNEL} ${MACH})"
    echo "系统版本:${OSSTR}"

}


function get_kernel_version()
{
    echo "========================================"
    kernel_version=`uname -r`
    echo "内核版本:${kernel_version}"
}

function get_hostname()
{
    echo "========================================"
    echo "主机名:$HOSTNAME"
}
function get_login_users()
{
    echo "========================================"
    echo "登录用户信息"
    who -s
}

function get_mem_info()
{
    echo "========================================"
    echo "内存信息:"
	cat /proc/meminfo
    free -h| grep Mem
    free -h | grep Swap
}
function get_disk_info()
{
    echo "========================================"
    echo "存储状态:"
    df -h
}
function main()
{
    get_kernel_version
    get_system_version
    get_hostname
    get_login_users
    get_mem_info
    get_disk_info
}
main $@

代码编译后

使用 sudo vim /etc/profile 打开配置文件
在文件中加入
export PATH=$PATH:~/final
将我的综合设计的文件夹加入到path环境变量里,使在所有目录下运行bash命令时都会检查~/final文件夹。以此达到题目的要求。

运行结果

在这里插入图片描述
在这里插入图片描述

二、中级部分

题目

编写shell程序实现“学生信息管理”,包括查看、增加、删除、修改、统计等基本功能;

需求分析

在linux上,如果不能使用mysql一类的软件,就需要一个简单的文件信息管理系统,在本次实验中是管理学生的文件信息。实现查看、增加、删除、修改、统计等功能后,就可以对学生的学院,成绩,编号等信息进行简单管理。

题目分析

此题目比较寻常,目标是将学生信息加以保存到文件中,所以先设计数据保存形式,此处我们选择简单的使用txt文本保存。目录为/home/nevermore/final/level2save
在输入并保存数据后,进行数据的统计输出(我使用的是冒泡排序)。如此达到题目要求。

代码

#!/bin/bash
#!/bin/awk -f
#此处是保存数据的目录
StudentInfoPath="/home/nevermore/final/level2save/StudentInfo.txt"
CollegeInfoPath="/home/nevermore/final/level2save/CollegeInfo.txt"
GradeInfoPath="/home/nevermore/final/level2save/GradeInfo.txt" 

insert_college_info(){
 
	echo "请输入要加入的学院编号:"
		read collegeNo
		export existFlag=false
		while read line
			do
				lineCollegeNo=${line/,*/}
			if [ "$lineCollegeNo" = "$collegeNo" ];
			then {
				export existFlag=true
					break
			}
			fi
				done<$CollegeInfoPath
 
				if [ "$existFlag" == "true" ];
			then {
				export existFlag=false
				echo "已有此学院!,插入失败"
			}
				else {
					echo "请输入学院的名称: "
					read collegeName
					echo "$collegeNo,$collegeName" >> $CollegeInfoPath
					echo "学院记录插入成功,插入的记录为($collegeNo,$collegeName)"
				}	
			fi
}
del_student_info(){
	echo "请输入要删除的学生编号: "
		read studentNo
		export nowline=0;
	export delCount=0;
	while read line
		do
		export nowline=$(($nowline + 1))
		echo $line":"$nowline
		lineStudentNo=${line/,*/}
		if [ "$lineStudentNo" = "$studentNo" ];
		then {
			sed "/$lineStudentNo/d" $StudentInfoPath > $StudentInfoPath"_back"
				export delCount=$(($delCount + 1))
			mv $StudentInfoPath"_back" $StudentInfoPath
		}
		fi
			done<$StudentInfoPath
			echo "删除成功: 被删除学生编号$studentNo,删除个数为$delCount"
}
del_college_info(){
 
	echo "请输入要删除的学院编号: "
		read collegeNo
		export nowline=0;
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值