• 这年头不会点shell 脚本都不好意思说自己是程序员了
  • 发布于 2个月前
  • 102 热度
    0 评论

出去一看招聘网站,不管是干数据库亦或者是干运维甚至是干开发都要求会 shell 脚本。都可以称的上是一种编程语言了。

有读者说shell脚本很难,说实话,我刚开始也觉得特别难。别无它法,硬着头皮练。

想想刚开始学的时候确实头大。因为啥也不懂。学东西在理解的基础上去操作,这样或许更容易上手一些。多实操,多练习。这是前期避免不了的,要尽量把它练熟悉,达成肌肉条件反射。这也是一种方法。

我举个最简单的例子,9*9乘法表:

#!bin bash 
for((i=1,i<=9,i++))
   do
 for ((j=1,j<=i,j++))
   do
echo -n -e "$j*$i="$[j*i]" \t"
  done
 echo -e "\n"
  done

有点编程基础的应该都可以看得懂。就是当 j<=i的时候一直是去循环做乘法的。

但是前提是需要了解写 shell 脚本的规范和一些概念。

比如这里#!bin bash就是shell解释器,代表了以何种方式去运行。因为在 linux 中是有多种方式的,比如 sh等。

echo -n这里得意思是不自动换行。


再拿一个例子来说,比如公司使用的是 mysql 数据库,如何能知道数据库是否自动停止,那就可以用 shell 脚本去监控。

众所周知,mysql的默认端口是 3306,那就可以从端口这里下文章。

#!bin bash
if ["netstat -lnt | grep -i 3306 | awk -F "[:]" '{print $5}'"=3306]
then 
 echo "MySQL is running"
else
 echo "MySQL is not running"
 /etc/init.d/mysqld start
fi

重点思路就在于把端口为 3306 的MySQL 进程找出来,如果有则代表正常,如果没有则自动在将它启动起来。

也就是说,在写一个脚本之前,脑子里面就要大概有一个大体的思维。有了思路再去尝试去写。

再比如同事有这样的一个场景,监控磁盘使用率<多少多少 M时候就异常。那么首先就需要想到在 linux 中查看磁盘使用率的命令是df -h。需要将df -h 的这一列的 used 这一列用 awk 切割出来。很显然这里还有 M 不只是 G ,那就只有在转换。第一行也就是标题这一行得去掉,用 sed 即可。有了这样的一个大概思路,那我们就可以尝试去写一个比较简单的 shell 脚本了。


#!bin bash
for i in 'df -h | awk '{print $4}' | awk -F G '{print $1}' |sed 1d'
do 
if [$i -gt 7168]
  then
 echo good 
  esle 
 echo bad
fi
done

还有很多的规则,当然这并不是三言两语就能够道得清的,只是想说明一点:学技术没有那么难,并不是我们都是去造火箭的,如果说难,那只是没有去多练习。

有时候我们很怕,怕自己的成长速度跟不上时间的脚步,年岁蹉跎,一辈子庸庸碌碌。但是请相信,只要今天的你比昨天的你进步一点点,就已足够。                

用户评论