1.需求分析

用户在进行Linux系统管理的过程中,经常需要用到查看进程的信息、用户的信息等常用的功能。本例针对这一需要,使用shell编程实现了基本的系统管理功能。通过本程序,可以按照要求实现查看进程信息、查看当前登录系统的用户等功能。程序主界面的颜色可以修改,也可以显示帮助信息。


   2.系统设计

   实例流程图如下:

201928134.png



3.程序代码

根据上述流程图,程序可以分为几个模块:界面修改模块,主界面模块,查看进程信息模块,查看用户信息模块和帮助模块,各模块封装成函数予以实现。


# 界面修改模块

color()#定义函数color,根据输入颜色信息修改界面颜色

{

case $1 in#调用case判断函数参数1的值

black_green)#黑底绿字

echo -e "\033[40;32m"

#调用echo,通过向显示器输出控制字符达到特殊效果

;;#case局部结束符

black_yellow)#黑底黄字

echo -e "\033[40;33m"

;;

white_blcak)#白底黑字

echo -e "\033[40;37m"

;;

black_white)#黑底白字

echo -e "\033[40;36m"

;;

black_blue)#黑底蓝字

echo -e "\033[40;34m"

;;

esac#case结束

}


# 主界面模块

echo -e"\033[2J"#清屏

trap ""1 2 3#设置信号处理

mday=`date+%d/%m/%y`#日期信息

mhost=`hostname`#机器名信息

mwho=`whoami`#当前用户信心

while :#循环显示主菜单

do

cat <<mmenu

------------------------------------------------------------

$mwho$mhost$mday

------------------------------------------------------------

1: 改变字体颜色

2: 查看进程信息

3: 查看用户信息

h: 帮助

q: 退出

------------------------------------------------------------

mmenu

echo -e -n"\t 输入您的选择[1,2,3,h,q]: "

read Cho

case $Cho in

1)

while :

do

cat <<kcol

------------------------------------------------------------

$mwho$mhost$mday

------------------------------------------------------------

1:黑绿2:黑黄3:白黑4:黑白5:黑蓝0:返回

------------------------------------------------------------

kcol

echo -e -n "\t请输入选择的颜色[1,2,3,4,5]: "

read choice

if [ "$choice" ="1" ]

then

color black_green

elif [ "$choice" ="2" ]

then

color black_yellow

elif [ "$choice" = “3” ]

then

color white_black

elif [ "$choice" ="4" ]

then

color black_white

elif [ "$choice" ="5" ]

then

color blace_blue

elif [ "$choice" ="0" ]

then

break

else

echo -e "\033[2J"

continue

fi

clear

done

;;



# 查看进程信息模块

2)

ps aux|sort-rn|head -10

;;


# 查看用户信息模块

3)

who

;;


# 帮助模块

H|h)

cat <<mmenu

-----------------------------------------------------------------

选择改变颜色可以修改当前界面的字体颜色

选择查看进程信息可以获取当前占用资源最高的前10个进程

选择查看用户可以获取当前登录系统的用户信息

----------------------------------------------------------------

mmenu

;;

Q|q)

exit 0

;;

*)

echo -e"\033[2J";

continue;

;;

esac

echo -e -n"\t 按任意键继续"

read J

clear

done


说明:

1.脚本程序已经测试,完全通过,只是里面的颜色部分有点小问题,大家可以查一查,在shell中颜色的数值码是多少,由于五一回家电脑没有网,所以希望大家完善这个代码。

2.在编写程序时,不要在里面刻意的加一些空格或者缩进,否则会报错。由于shell不比C语言那么自由,里面的空格,缩进都有讲究,希望大家认真仔细。

3.代码来源于资料,仅供参考。