当前位置:   article > 正文

Linux课程____shell脚本应用

Linux课程____shell脚本应用

一、认识shell

常用解释器 Bash , ksh , csh

登陆后默认使用shell,一般为/bin/bash,不同的指令,运行的环境也不同

二、 编写简单脚本并使用

# vim /frist.sh   //编写脚本文件,简单内容

#!/bin/bash                  //脚本声明,时间和作者

#This is my first Shell-Script.  //注释信息

cd /boot/
pwd
ls -lh vml*

# chmod +x first.sh   //赋予执行命令*只有赋值才能执行

方法1# . /frist.sh     //执行脚本文件

方法2# sh /first.sh

方法3# source /first.sh

1.重定向

2.管道案例

[root@localhost ~]# grep “bash$” /etc/passwd | awk  -F:  ‘{print $1,$7}’
root  /bin/bash
teacher  /bin/bash
test=test2

三、变量

1.定义变量

“this is s test”  输出  this is s test
 "this is a $test"     输出        this is a test2

 "this is a \$test"   输出        this is s \$test

2.设置全局变量

3.整数变量的运算

4.位置变量

案例

  1. [root@hfj ~]# vi /myprog.sh
  2. #!/bin/bash
  3. echo "first is:"
  4. echo "$1"
  5. echo "second is:"
  6. echo "$2"
  7. echo "three is:"
  8. echo "$3"
  9. echo "all number is:"
  10. echo "$#"
  11. echo "this process is:"
  12. echo "$0"
  13. [root localhost ~]# ./myprog.sh one two three four five six
  14. irst is:
  15. one
  16. second is:
  17. two
  18. three is:
  19. three
  20. all number is:
  21. 4
  22. this process is:
  23. ./myprog.sh

5.赋值时使用引号:


“”双引号,允许通过$符号引用其他变量值

‘’单引号,在双引号按键的下方。禁止引用其他变量值,$视为普通字符

、、反撇号,在?按键的下方。命令替换,提取命令执行后的输出结果

6.预定义变量

$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出            错
$0:当前执行的进程/程序名

四、小实验

写欢迎脚本,显示IP地址,时间,当前用户、系统运行时间和负载、系统版本信息。
任务命令分析如下:

ifconfig -a ens160 、date 、whoami 、uptime 、uname -a

  1. # vim /aaa
  2. cho " Welcome to my computer"
  3. echo "查看160端口信息"
  4. ifconfig -a ens160 | awk 'NR==2 {print $2; exit}'
  5. echo "查看日期"
  6. date
  7. echo "查看主机名称"
  8. whoami
  9. echo "查看运行时间"
  10. uptime |awk '{print $1}'
  11. echo "查看版本号"
  12. uname -a | awk '{print $3}'
  13. #vim .bash_profile //写入开机文件

方法2

  1. #!/bin/bash
  2. # 变量定义
  3. date=$(date)
  4. user=$(whoami)
  5. uptime=$(uptime)
  6. version=$(uname -a)
  7. ip=$(ifconfig -a ens160|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')
  8. red='\033[31m' // 红色
  9. blue='\033[34m' //蓝色
  10. #显示信息
  11. echo -e " "
  12. echo -e "${blue}本机IP: ${red}"$ip
  13. echo -e "${blue}时间: ${red}"$date
  14. echo -e "${blue}当前用户: ${red}"$user
  15. echo -e "${blue}系统运行时间: ${red}"$uptime
  16. echo -e "${blue}版本信息: ${red}"$version
  17. echo -e " "

五、文件测试

test        

[  ]  :有空格 

1.常用操作符

2.数值比较

3.字符串比较

4.逻辑测试

注意:

最后输入  echo $?  才可输出结果:结果为0 表示真确,为其他数字表示错误

六、if语句

单分支,双分支,多分支

单分支 if then(成立结果) fi结束

1.单分支实验

  1. #!/bin/bash
  2. MOUNT_DIR="/mnt/cdrom/"
  3. if [ ! -d $MOUNT_DIR ]
  4. then
  5. mkdir -p $MOUNT_DIR
  6. fi

当脚本可以执行时echo $?输出为0,脚本文件错误时(和执行后错误无关)显示非0

2.多分支实验

  1. pinghost.sh
  2. #!/bin/bash
  3. ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
  4. if [ $? -eq 0 ]
  5. then
  6. echo "Host $1 is up."
  7. else
  8. echo "Host $1 is down."
  9. fi

 备注:

-c 发送包数量
-i 间隔时间
-W最长等待时间

实验

编写监控脚本sysmon.sh
监控CPU使用率、内存使用率、根分区/的占用率
百分比精确到个位,如7%、12%
出现以下情况时告警:磁盘占用率超过90%、CPU使用率超过80%、内存使用率超过90%。
报警记录到日志文件/var/log/use.log。

结合计划任务,每半小时检查一次
30分钟。
分析命令:
mpstat   先安装工具包:yum install sysstat
free 查看内存占有率
df -h 文件系统使用率
if条件分支。

  1. # vim /a3
  2. //#!/bin/bash
  3. //# 磁盘占有率超过90%,CPU使用率超过80%,内存使用率超过90%发送报警记录
  4. disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
  5. CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $13}' | awk -F. '{print $1}'))
  6. mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
  7. A=/var/log/use.log
  8. if [ $disk -ge 90 ]
  9. then echo "磁盘占有率超过90%" >> $A
  10. else
  11. echo "磁盘占有率:$disk%"
  12. fi
  13. if [ $CPU -ge 80 ]
  14. then echo "CPU使用率超过80%" >> $A
  15. else
  16. echo "CPU使用率:$CPU%"
  17. fi
  18. if [ $mem -ge 90 ]
  19. then echo "内存使用率超过90%" >> $A
  20. else
  21. echo "内存使用率:$mem%"
  22. fi
  23. # crontab -e
  24. */30 * * * * . /a3

七、awk工具

1.选项

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/322539
推荐阅读
相关标签
  

闽ICP备14008679号