shell 脚本整理

脚本仓库

1. 如果前一条命令执行成功则…
if [ $? -eq 0 ];then
echo -e  "successful"
else
echo "filed"
fi
2. 如果不是root用户则…

判断用户是不是XXX id号是否为XX 不是则返回

if  [[ `whoami` = "root"  && `id -u` -eq 0  ]];then
echo "该用户为root"
else
echo -e  "\e[1;31mERROR: 当前为非root用户登录,该服务需要以root权限运行!\e[0m"
    exit
fi
3. 用端口号来杀进程
kill  -9 $(ss  -lntup |grep  9090|awk -F'=' '{print $2}' |awk -F',' '{print $1}')

另一种零宽断言式

零宽断言语法
grep -oP
o: 只显示自己需要的内容 默认是显示一行 匹配到的部分是标红的
-P : 标识使用perl正则语言
(?=xxx) : 这个表示匹配xxx的左边内容 "?"开口向左就记住了
(?<=XXX) : 表示匹配右边的内容 <开口向右
(?<=pid=)[0-9]* 表示匹配pid= 右边的带数字的内容 *号代表出现一次或多次 实际情况pid的号码可能有重复也可能不重复 [0-9]表示匹配数字

 ss  -lntup |grep  80 |grep  -oP '(?<=pid=)[0-9]*'|xargs kill -9
根据服务名来杀进程(普通服务直接pkill 就好 此方法适用于自建的服务)
ps  -ef |grep xxx |awk '{print $2}'|xargs kill -9 
4. 简易服务监控脚本 每隔一段时间就检查服务是否运行 如果挂掉就给他重启

写个while true 循环让他一直执行去吧 条件可以根据实际情况来
(当时监控jenkins原因是因为服务器资源紧张。 进行资源扩容要上报 审批下来需要两三天 开发需要测试 这也是逼不得已)

#!/bin/bash
#isexists=0
while [ "1" -eq "1" ]
do

cd /etc/init.d
isexists=`ss -lntup | grep 8080 |wc -l `
 if [ $isexists  -eq "0" ]; then
 service jenkins  restart
fi
sleep  30
done

5.1 当然也可以逆向整活 每隔一段时间就监控某个服务 当他启动就给他关掉。 这种人建议离远一点,免得贱自己一身血哈哈

#!/bin/bash
#isexists=0
while [ "1" -eq "1" ]
do

cd /etc/init.d
isexists=`ss -lntup | grep 8080 |wc -l `
 if [ $isexists  -eq "1" ]; then
kill  -9 $(ss  -lntup |grep  8080|awk -F'=' '{print $2}' |awk -F',' '{print $1}')
fi
sleep  30
done

用 nohup & 方式启动
喜欢瞎搞的可以把这两个脚本内容在自己的虚拟机上跑一跑

6. 主机之间的免交互的互信脚本
懒得找了  自己搜一下把网上一堆哦

分享一个不设置sshkeygen的方法 可以看一下ssh服务的配置文件/etc/ssh/ssh_config 在第35行的位置可以看到每次连接默认的方式都是询问
相当于把当前主机作为跳板机

sshpass -p'$passwd' ssh  -o StrictHostKeyChecking=no '$user'@'$host'

需要执行什么命令的话 可以在后面加上 && 如:

sshpass -p'$passwd' ssh  -o StrictHostKeyChecking=no '$user'@'$host' && ' cd /usr/bin/ && touch test'
#### 7. 当你导入一堆docker镜像(一堆安装包) 懒得一个一个解压时
```bash
for i in $(ls);do docker load  -i $i ;done
ls *.tar.gz | xargs -n1 docker load -i 

-n1 #每行1个输出
-n2 #每行两个输出
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值