第十六天(shell篇:中),接昨天的文章,后续还有下篇 记得点赞加关注作者哦

shell篇(中)

练习1
编写一个shell脚本,用于搜集其执行主机的信息,打印结果如下: 
    [root@tiger tmp]# ./test.sh
    2012年 05月 24日 星期四 17:07:45 CST
    当前的用户为 root
    当前用户的宿主目录为 /root 用户的标识为 0
    主机名称为 newrain
    网卡的IP地址为 192.168.1.106
##脚本源码如下
#!/usr/bin/bash
# 获取主机基本信息
time=`date +%y年%m月%d日-%H:%M`
ip=`ifconfig eth0|grep inet|awk '{print $2}'` 
也可以用ip -f inet a show dev ens33 | awk '/inet/{print $2}' | cut -d/ -f或者ip -f inet a show dev ens33 | awk '/inet/{print $2}' | awk -F'/' '{print $1}'
echo "现在的时间是:" $time
echo "当前的用户是:" $USER
echo "当前的用户标识:" $UID
echo "当前的主机名称是:" $HOSTNAME
echo "当前可用网卡IP是:" $ip
echo "客户端的公网IP是:" `curl -s http://httpbin.org/ip | grep origin | awk '/:/{print $2}' | awk -F\" '{print $2}'`

操作如下图所示:

image-20240124172009871

其中的公网IP地址 也可以改为:

`curl -s http://httpbin.org/ip | grep origin | awk '/:/{print $2}' | cut -d\" -f2`

操作如下图所示

image-20240124172202751

取根分区剩余空间:
		# df -h /dev/sda2 |awk 'NR==2{print $4}' 371G
取当前系统剩余内存:
		# echo "现在的剩余内存是:"`free -m |awk 'NR==2{print $4}'`
		现在的剩余内存是:12813M
取当前cpu平均负载:
		# echo 现在cpu的`uptime |cut -d, -f3-` //-d指定分隔符,-f指定显示区域,3-第三列以后(包括第三列)
		现在cpu的 load average: 0.07, 0.12, 0.11
		# echo 现在cpu的`uptime |awk -F"," '{print $4,$5,$6}'`
		现在cpu的 load average: 0.00 0.04 0.10

查看磁盘空间

取根分区剩余磁盘或硬盘空间
输入:df -h | awk '/\/$/{print $5}' 或者 df -h | grep "/$" | awk '{print $5}'

第一种方法输入:df -h | awk ‘//$/{print $5}’

image-20240124173534101

第二种方法输入:df -h | grep “/$” | awk ‘{print $5}’

image-20240124174302385

第三种方法:

image-20240124144934766

查看系统剩余内存

取当前系统剩余内存
输入:free -m | awk '/Mem/{print $4}' 或者 free -m | awk 'NR==2{print $4}'

第一种方法:输入free -m | awk ‘/Mem/{print $4}’

image-20240124175103178

第二种方法:输入:free -m | awk ‘NR==2{print $4}’

image-20240124175517731

查看cpu平均负载

取cpu平均负载
输入:uptime | awk '{print $8,$9,$NF}' 或者uptime | cut -d, -f3- | cut -d: -f2或者 uptime | cut -d: -f5

输入:uptime可以查看状态,如下如所示

image-20240124145948752

第一种方法输入:uptime | awk ‘{print $8, 9 , 9, 9,NF}’

image-20240124193611028

第二种方法:uptime | cut -d, -f3- | cut -d: -f2

image-20240124195643043

第三种方法 :uptime | cut -d: -f5(这种方法就没有第二种那么繁琐,直接以“:”为分割)

image-20240124200356417

位置变量

位置变量
    $1 $2 $3 $... 
    #/test.sh start 
    #/test.sh 2 3 5 hello
    start是第1个位置参数 
        2 是第1个位置参数
        3 是第2个 依次类推
例子:
[root@newrain shell]# cat weizhi.sh 
#!/bin/bash
#...
echo 我的第一个位置参数是:$1 
echo 我的第二个位置参数是:$2 
echo 我的第三个位置参数是:$3 
echo 我的第四个位置参数是:$4 
echo 一共有 $# 个位置参数 
echo 你输入的参数分别是:$*
操作可见下面两张图

第一张图:设置了$1,$2, 3 三个位置变量, 3三个位置变量, 3三个位置变量,#代表着一共有几个位置变量,$*代表着所有的位置变量参数分别是哪些。

image-20240124205346423

从图二可见,我输入了 1,2,3一共三个位置变量,以及KaTeX parse error: Expected 'EOF', got '#' at position 1: #̲显示出一共三个位置变量,*分别显示出了1,2,3这三种变量。

image-20240124205445872

求出第一个参数和第二个参数的和
./5.sh 4 5
9
./5.sh 10 20 30
#!/bin/bash
# 求 $1 $2 的和 
x=${1:-0} 
y=${2:-0}
echo $(($x+$y))
操作看下方图片

图一

image-20240124211007984

图二

image-20240124211256541

四、脚本运行

创建bash脚本(shell脚本)
1.创建脚本文件 
		指定命令解释器
		注释
		编写bash指令集合 (脚本内容)
2.修改权限 chmod +x scriptname (scriptname 是你要修改权限的脚本名字)
这些之前的笔记中提到过,可以往作者往期作品看看
bash脚本执行
#./scripts
#/shelldoc/scripts
#. ./scripts 使用当前shell执行
#source ./scripts 使用当前shell执行 比如cd /tmp会改变当前shell环境,但是其他的方式不会 
#bash scripts
这些在上文的执行脚本类型中有提到
子shell
[root@mysql ~]# vim bash.sh
cd /opt/
pwd
[root@mysql ~]# sh bash.sh 
/opt
[root@mysql ~]# source bash.sh 
/opt
[root@mysql opt]#
bash 脚本测试
•sh –x script(script是文件名)
     这将执行该脚本并显示所有变量的值
•sh –n script(script是文件名)
		 不执行脚本只是检查语法模式,将返回所有错误语法
•sh –v script(script是文件名)
     执行脚本前把脚本内容显示在屏幕上
     用法如下图

image-20240124211752512

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值