判断用户是不是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另一种零宽断言式
零宽断言语法 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写个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 done5.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 & 方式启动 喜欢瞎搞的可以把这两个脚本内容在自己的虚拟机上跑一跑
分享一个不设置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 #每行两个输出