赞
踩
常用解释器 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
[root@localhost ~]# grep “bash$” /etc/passwd | awk -F: ‘{print $1,$7}’
root /bin/bash
teacher /bin/bash
test=test2
“this is s test” 输出 this is s test
"this is a $test" 输出 this is a test2"this is a \$test" 输出 this is s \$test
案例
- [root@hfj ~]# vi /myprog.sh
-
- #!/bin/bash
- echo "first is:"
- echo "$1"
- echo "second is:"
- echo "$2"
- echo "three is:"
- echo "$3"
- echo "all number is:"
- echo "$#"
- echo "this process is:"
- echo "$0"
-
- [root localhost ~]# ./myprog.sh one two three four five six
-
- irst is:
- one
- second is:
- two
- three is:
- three
- all number is:
- 4
- this process is:
- ./myprog.sh
“”双引号,允许通过$符号引用其他变量值
‘’单引号,在双引号按键的下方。禁止引用其他变量值,$视为普通字符
、、反撇号,在?按键的下方。命令替换,提取命令执行后的输出结果
$#:命令行中位置变量的个数
$*:所有位置变量的内容
$?:上一条命令执行后返回的状态,当返回状态值为0时表示执行正常,非0值表示执行异常或出 错
$0:当前执行的进程/程序名
写欢迎脚本,显示IP地址,时间,当前用户、系统运行时间和负载、系统版本信息。
任务命令分析如下:
ifconfig -a ens160 、date 、whoami 、uptime 、uname -a
- # vim /aaa
- cho " Welcome to my computer"
- echo "查看160端口信息"
- ifconfig -a ens160 | awk 'NR==2 {print $2; exit}'
- echo "查看日期"
- date
- echo "查看主机名称"
- whoami
- echo "查看运行时间"
- uptime |awk '{print $1}'
- echo "查看版本号"
- uname -a | awk '{print $3}'
- #vim .bash_profile //写入开机文件
方法2
- #!/bin/bash
- # 变量定义
- date=$(date)
- user=$(whoami)
- uptime=$(uptime)
- version=$(uname -a)
- ip=$(ifconfig -a ens160|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}')
-
- red='\033[31m' // 红色
- blue='\033[34m' //蓝色
-
- #显示信息
- echo -e " "
- echo -e "${blue}本机IP: ${red}"$ip
- echo -e "${blue}时间: ${red}"$date
- echo -e "${blue}当前用户: ${red}"$user
- echo -e "${blue}系统运行时间: ${red}"$uptime
- echo -e "${blue}版本信息: ${red}"$version
- echo -e " "
test
[ ] :有空格
最后输入 echo $? 才可输出结果:结果为0 表示真确,为其他数字表示错误
单分支,双分支,多分支
单分支 if then(成立结果) fi结束
- #!/bin/bash
- MOUNT_DIR="/mnt/cdrom/"
- if [ ! -d $MOUNT_DIR ]
- then
- mkdir -p $MOUNT_DIR
- fi
当脚本可以执行时echo $?输出为0,脚本文件错误时(和执行后错误无关)显示非0
- pinghost.sh
- #!/bin/bash
- ping -c 3 -i 0.2 -W 3 $1 &> /dev/null
- if [ $? -eq 0 ]
- then
- echo "Host $1 is up."
- else
- echo "Host $1 is down."
- 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条件分支。
- # vim /a3
- //#!/bin/bash
- //# 磁盘占有率超过90%,CPU使用率超过80%,内存使用率超过90%发送报警记录
- disk=$(df -Th | grep '/$' | awk '{print $6}' | awk -F% '{print $1}')
- CPU=$(expr 100 - $(mpstat | tail -1 | awk '{print $13}' | awk -F. '{print $1}'))
- mem=$(expr $(free -m | grep "Mem:" | awk '{print $7}') \* 100 / $(free -m | grep "Mem:" | awk '{print $2}'))
- A=/var/log/use.log
- if [ $disk -ge 90 ]
- then echo "磁盘占有率超过90%" >> $A
- else
- echo "磁盘占有率:$disk%"
- fi
- if [ $CPU -ge 80 ]
- then echo "CPU使用率超过80%" >> $A
- else
- echo "CPU使用率:$CPU%"
- fi
- if [ $mem -ge 90 ]
- then echo "内存使用率超过90%" >> $A
- else
- echo "内存使用率:$mem%"
-
- fi
- # crontab -e
- */30 * * * * . /a3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。