shell脚本(1)

一、脚本认识
# shell脚本既是运维中必不可少的工具,又可以减少重复操作,配合计划脚本,或者其他脚本,可以让我可以同时对多台服务器执行操作,可以指定时间运行命令,使得服务管理更加轻便。
二、脚本编写。
# 脚本的编写其实就是命令行和语句的堆叠,将我们平时需要手敲的命令,写到脚本中。今天所做的笔记更多的是复习之前使用shell和自学的部分,不做赘述。
# 写脚本之前要确认写脚本的需求,已经确认写脚本的必要,这里还是要感谢前同事段哥,之前我想要脚本安装k8s集群,想想算算各种可能出现的情况:安装几个控制节点,安装几个计算节点,安装前要使用什么样的语句... 但是在我刚开始做的时候,段哥跟我说:“现在有一条一年一用但是长达几百行的sql,还有一个每天执行但是只有几行的sql,你要用优化那一条?”
# 实验1、ping服务器
[root@init-03 ~]# cat ping.sh 
#!/bin/bash
ping -c1 192.168.100.10 &>/dev/null  && echo 192.168.100.10up || echo 192.168.100.10down
[root@init-03 ~]# bash ping.sh 
192.168.100.10down
# 你可以使用if去写,也可以for或者while去写,我这里只是ping一个ip。
# 实验2、安装nginx
# #!/bin/bash
www=`cat /etc/passwd |awk -F ":" '{print $1}' |grep www`
yum -y install gcc gcc-c++
tar zxvf pcre-8.39.tar.gz -C /usr/local/
cd /usr/local/pcre-8.39
./configure --prefix=/usr/local/pcre
make
make install
cd -
tar zxvf   -C /usr/local/
cd /usr/local/zlib-1.2.11
./configure --prefix=/usr/local/zlib
make
make install
cd -
tar zxvf openssl-1.0.2l.tar.gz -C /usr/local
cd /usr/local/openssl-1.0.2l
./config --prefix=/usr/local/openssl
make
make install
cd -
tar zxvf nginx-1.16.1.tar.gz
cd nginx-1.16.1
# Check User for www
if [ ! -f $www ]; then
    echo "The user is already exist."
else
    /usr/sbin/useradd -M -s /sbin/nologin www
fi

[ -d /var/log/nginx ] || /bin/mkdir -p /var/log/nginx

./configure --user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_stub_status_module \
--without-http-cache \
--with-http_ssl_module \
--with-pcre=/usr/local/pcre-8.39 \
--with-zlib=/usr/local/zlib-1.2.11 \
--with-openssl=/usr/local/openssl-1.0.2l \
--sbin-path=/usr/local/nginx/sbin/nginx \
--conf-path=/usr/local/nginx/conf/nginx.conf \
--error-log-path=/usr/local/nginx/log/error.log \
--http-log-path=/usr/local/nginx/log/access.log \
--pid-path=/usr/local/nginx/run/nginx.pid    

CPU_NUM=$(cat /proc/cpuinfo | grep processor | wc -l)
if [ $CPU_NUM -gt 1 ];then
    make -j$CPU_NUM
else
# 源码安装需要各种软件包,需要自己准备好。
# 实验3、脚本调脚本
[root@init-03 ~]# cat 1.sh 
#!/bin/bash
/bin/chmod +x 2.sh 
/bin/bash  2.sh
[root@init-03 ~]# cat 2.sh 
#!/bin/bash
echo "say hello to world"
[root@init-03 ~]# bash 2.sh 
say hello to world
# 实验4、脚本调脚本变量
[root@init-03 ~]# cat 2.sh 
#!/bin/bash
mood="say hello to world \n"
[root@init-03 ~]# cat 3.sh 
#!/bin/bash
. 2.sh
echo -e ${mood}
exit 0 
[root@init-03 ~]# ll
total 28
-rw-r--r--  1 root root   48 Apr 17 09:36 1.sh
-rw-r--r--  1 root root   41 Apr 17 09:40 2.sh
-rw-r--r--  1 root root   43 Apr 17 09:41 3.sh
-rw-------. 1 root root 1409 Mar 21 11:32 anaconda-ks.cfg
-rw-r--r--  1 root root  101 Apr 17 09:25 ping.sh
[root@init-03 ~]# bash 3.sh 
say hello to world 
三、简单小结
# 一万个需求就会有大于等于一的脚本产生,脚本除了减去反复操作解放双手,让我们有更多的时间去做更多我们想做的事情,但是,单一一个脚本实现过多的功能,也会导致脚本体积过大,不利于使用和维护。在我刚开始学习脚本的时候,老师就告诉我们说:“脚本不是单单给你自己使用的,当然你也在使用,但工作中脚本也会被其他人使用、管理和维护。”所以我们需要在脚本前注释说明脚本使用背景和脚本编写人,脚本中需要注释说明命令的作用,当然我这个不是好脚本,所以就不做了...

本文作者:Tanuki_11

本文链接:https://www.cnblogs.com/tanukisama/p/16155080.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Tanuki_11  阅读(37)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.