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 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步