以下代码是关于shell脚本的问题,求大佬解释!

vi login.root

01#!/bin/bash
02echo "This is a private server,please leave,thanke you!"
03echo "Welcome $USER To Login To This Server!"
04LoginUserNum=`who | wc -l`
05OpenProcesNum=$(expr $(ps aux | wc -l) - 1)
06FreeMem=`free -m | grep Mem: | awk '{print $4}'`
07FreeBuffers=`free -m | grep - | awk '{print $3}'`
08FreeCache=`free -m | grep - | awk '{print $4}'`
09FreeSwap=`free -m | grep Swap: | awk '{print $4}'`
10echo "Number of Login Users:"$LoginUserNum
11echo "Numbre of Running Processes:"$OpenProcesNum
12echo "Free Memory Size(MB):"$FreeMem
13echo "Free Buffers Size(MB):"$FreeBuffers
14echo "Free Cache(MB):"$FreeCache
15echo "Free Swap Space Size(MB):"$FreeSwap
本人没有一点liunx基础 但由于是任务 所以小白菜求救 每条命令解释一定要详细点 通俗点 
谢谢了

largeQ
浏览 186回答 1
1回答

交互式爱情

第一行 #!/bin/bash 指定用bash来执行该shell脚本第二行 echo...简单打印出This is a private server,please leave,thanke you!这句话第三行 echo...简单打印出Welcome $USER To Login To This Server! 其中$USER会被替换为执行该脚本的用户名第四行 who命令打印出当前登陆该服务器的所有用户 每个用户一行 “|” 是管道操作 把who操作的结果传给wc -l。而wc -l 统计出一共多少行 也就是有多少用户 最后赋值给LoginUserNum,所以LoginUserNum表示当前登陆的用户数。第五行 ps aux列出当前所有的进程信息 每个进程占一行 管道给wc -l统计得到总的进程数,由于 ps aux也会生成一个进程 所以要减到自身 expr做算术的减法 得到实际的总进程数 最后赋值给OpenProcesNum第六行 free -m命令得到下面类似的输出,管道给grep Mem:,grep是逐行查找命令,在这里找到“Mem:”所在的行 在经管道传给awk,awk默认按空格将每行切分成多个记录 每个记录用$i表示,例如$1=Mem:$2=3947 $3=3886....所以print $4也就是打印61 也就是mem对应的free部分 赋值给FreeMem 第七行grep -找到 -所在的行 也即-/+ buffers/cache:那行 打印$3也就是图中的2158 对应free部分 赋值给FreeBuffers第八行类似  grep -找到 -所在的行 也即-/+ buffers/cache:那行 复制给FreeCache(不懂为啥是$4)第九行类似 grep Swap:找到Swap:所在行 打印$4也即图中9629 对应free部分 赋值给FreeSwap第十到十五行echo... 将前面赋值的结果分别打印出来###########我是分割线####################其中的命令 who、who|wc -l、ps aux、free -m、 free -m | grep Mem: 都可以在shell里自己试试 看看输出是什么 会直观一点
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java
Python