组合命令
- 使用控制符组合多个命令
;
&&
||
[ a == a ];echo message
message
[ a == b ];echo message
message
[ a == a ]&& echo message
message
[ a == b ]&& echo message
[ a == a ] || echo message
[ a == b ] || echo message
message
[ a == a ] && echo message || echo Y
message
[ a == a ] && echo message && echo Y
message
Y
- 使用
&&
,||
进行多个条件的判断- [ 判断1 ] && [ 判断2 ]
- [ 判断1 ] || [ 判断2 ]
- [ a == a ] && [ 3 -gt 2 ]
- [ a == a ] || [ 3 -gt 2 ]
[ a == a ] && [ 3 -gt 2 ]; echo $?
0
[ a == a ] || [ 3 -gt 2 ]; echo $?
0
基础命令
- tr -s 删除多余重复的字符串
echo "a b c" | tr -s " " #删除多余的空格
a b c
echo "aaacaaaaabaaaaadaaaaq" | tr -s "a" #删除多余a
acabadaq
- cut过滤数据
cut -d: -f1 /etc/passwd #以冒号为分隔,过滤第一行
nobody
root
daemon
监控系统信息实战
下面以一段监控服务器信息的脚本文件,做实战演练,脚本如下:
#!/bin/bash
#本脚本获取系统各项性能参数指标,并与预设阈值进行比较
#time:时间,loalip:eth0网卡IP,free_mem:剩余内存大小,free_disk:剩余磁盘大小
#cpu_load:15min平均负载,login_user:登录系统的用户,procs:当前进程数量
local_time=$(date +"%Y%m%d %H:%M:%S")
local_ip=$(ifconfig en0 | grep netmask | tr -s " " | cut -d" " -f2)
free_mem=$(cat /proc/meminfo | grep Avai|tr -s " " | cut -d" " -f2)
free_disk=$(df | grep "/$" | tr -s " " | cut -d" " -f4)
cpu_load=$(cat /proc/loadavg|cut -d' ' -f3)
login_user=$(who|wc -l)
procs=$(ps aux|wc -li)
[ $free_mem -lt 1048576 ] && echo "$local_time Free memory not enough. free_mem:$free_mem on $local_ip" | mail -s Warning root@localhost
#当磁盘不足10G时发送邮件给root进行报警
[ $free_disk -lt 10485760 ] && echo "$local_time Free disk not enough. root_free_disk: $free_disk on $local_ip" | mail -s warning root@localhost
#当cpu的15min平均负载超过4时,发邮件告警
result=$(echo "$cpu_load > 4" |bc)
[ $result -eq 1 ] && echo "$local_time cpu load to high cpu 15 averageload:$cpu_load on $local_ip"|main -s warning root@localhost
#当系统实时在线人数超过3人,发送邮件告警
[ $login_user -gt 3 ] && echo "$local_user users login to $local_ip" | mail -s warning root@localhost
#当进程数量大于500时告警
[ $procs -gt 500 ] && echo "$local_time Too many procs. $procs proc are running on $local_ip" | mail -s warning root@localhost
小结
- 命令的控制操作符
- 使用基础条件判断实现系统监控功能
网友评论