Linux脚本学习必经之路:Shell脚本实例分享
写shell脚本还是一样,思路第一,语法其次,下面分享几个脚本实例,大家主要是理解一下里面的思路,语法稍微注意一下。
什么是linux技术:
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
1. 观察数字,输出包含前6个数字在内的16个数字
观察以下数字,看有什么规律:
-
10 31 53 77 105 141
这里数字的规律在于两个数字的差值的差值是2的幂次方
那么怎么用shell脚本实现需求呢?
-
#!/bin/bash
-
###############################################
-
#10 31 53 77 105 141
-
#观察数字,输出包含前6个数字在内的16个数字
-
#数字的规律在于两个数字的差值的差值是2的幂次方
-
###############################################
-
a=10
-
b=21
-
echo $a
-
for i in `seq 0 13`
-
do
-
#2的$i次幂
-
c=$[2**$i]
-
a=$[$a+$b]
-
b=$[$b+$c]
-
echo $a
-
done
-
a=$[$a+$b]
-
echo $a

输出结果:

2. 查看Linux系统中是否存在自定义用户,并统计自定义用户数量
-
#!/bin/bash
-
##########################################################
-
#查看Linux系统中是否存在自定义用户,并统计自定义用户数量
-
#截取/etc/passwd文件中第三段的数字,大于1000者即为自定义用户
-
##########################################################
-
n=`awk -F ':' '$3>1000' /etc/passwd|wc -l`
-
if [ $n -gt 0 ]
-
then
-
echo "there are $n custom users"
-
else
-
echo "no custom user"
-
fi
结果输出:

3. 监控磁盘分区以及inode使用率并告警
-
#!/bin/bash
-
################################################################
-
#监控所有磁盘分区以及inode使用率,当某个分区容量或inode使用量大于85%时,发送邮件告警
-
################################################################
-
#将系统语言设置为英文,如果是中文则会产生bug
-
LANG=en
-
log=/tmp/`date +%F.log`
-
tag1=0
-
tag2=0
-
df -h >> $log
-
df -i >> $log
-
#遍历各个磁盘利用率的数值
-
for h in `df -h|grep -v 'Use'|awk -F ' +|%' '{print $5}'`
-
do
-
if [ $h -gt 85 ]
-
then
-
$tag1=1
-
fi
-
done
-
#遍历各个磁盘inode的数值
-
for i in `df -i|grep -v 'Use'|awk -F ' +|%' '{print $5}'`
-
do
-
if [ $i -gt 85 ]
-
then
-
$tag2=1
-
fi
-
done
-
#磁盘空间以及inode都没有问题,tag=0
-
if [ $tag1 -eq 0 ] && [ $tag2 -eq 0 ]
-
then
-
tag=0
-
fi
-
#磁盘空间有问题,inode没有问题,tag=1
-
if [ $tag1 -eq 1 ] && [ $tag2 -eq 0 ]
-
then
-
tag=1
-
fi
-
#磁盘空间没有问题,inode有问题,tag=2
-
if [ $tag1 -eq 0 ] && [ $tag2 -eq 1 ]
-
then
-
tag=2
-
fi
-
#磁盘空间以及inode都有问题,tag=3
-
if [ $tag1 -eq 1 ] && [ $tag2 -eq 1 ]
-
then
-
tag=3
-
fi
-
#根据不同的tag数值,最终输出不同的结果
-
case $tag in
-
0)
-
echo "no problem."
-
##mail.py
-
;;
-
1)
-
echo "disk space is not enough."
-
##mail.py
-
;;
-
2)
-
echo "disk inode is not enough."
-
##mail.py
-
;;
-
3)
-
echo "disk space and disk inode are not enough."
-
##mail.py
-
;;
-
esac


输出结果:

4. 监测目标目录的文件生成情况
需求:用脚本每隔5分钟监测目标目录是否有新文件生成,若有新文件生成,则将新文件的列表输出到一个按年、月、日、时、分为名字的日志里。
实现:
-
#!/bin/bash
-
##################################################################
-
#用脚本每隔5分钟监测目标目录是否有新文件生成,若有新文件生成,则将新文件
-
#列表输出到一个按年、月、日、时、分为名字的日志里
-
##################################################################
-
a=`date -d "-5 min" +%Y-%m-%d-%H-%M`
-
logfile=/tmp/$a.log
-
basedir=/home
-
#查找修改时间少于5分钟的文件,并将列表记录在临时文件中
-
find $basedir/ -type f -mmin -5 > /tmp/test.txt
-
n=`cat /tmp/test.txt|wc -l`
-
if [ $n -gt 0 ]
-
then
-
mv /tmp/test.txt $logfile
-
fi


5. 查看常用命令,并列出TOP10
-
#!/bin/bash
-
####################################
-
#对历史命令排序|查重|倒叙排列|取前10行
-
####################################
-
sort /root/.bash_history|uniq -c|sort -nr|head

输出:

文章出自:http://qh.itpxw.cn/peixun/software/201953750.html
文章标题:大牛都是这样学linux脚本技术的
免责声明:本站文章均由入驻起航学习网的会员所发或者网络转载,所述观点仅代表作者本人,不代表起航学习网立场。如有侵权或者其他问题,请联系举报,必删。侵权投诉
(责任编辑:IT培训网)