三剑客 and shell

**

shell基础

**
shell脚本变量 脚本思路
$? 前一个命令脚本是否运行成功
$x 引用变量
& 在后台运行
&& 前一个完成在完成下一条指令
实现脚本思路: 目的 手段(echo? if?while?) 步骤(先干嘛在干嘛) 检测(试运行) 完善(格式颜色等细节)
执行 sh 脚本 bash 脚本 ./脚本
编写日常巡检脚本

shell三种循环
for 条件循环(读取不同的变量值,来执行同一组命令)
while循环 只要条件成立,则反复循环 ,不成立则终止,(猜价格)
until循环 重复测试某个条件 不成立则反复循环 (1-50的和)
"=="是判断字符串是否相等。
"-eq"是判断字符串对应的数字值是否相等。
clear清屏
sleep 多少秒运行一次

变量
本地变量:用户私有变量,保存在.bash_profile,.bashrc
全局变量:所有用户都可以使用,保存在/etc/profile,/etc/bashrc中
自定义变量:用户自定义,脚本中的变量
取消临时变量 unset
Docker变量也是相同路径

文件比较和检查
-d检查是否为目录
-e是否存在
-f检查是否存在而且为为文件
-r w x检查是否存在而且可读,写执行
-s是否存在且不为空

条件判断
-eq等于
-ne不等于
-gt 大于
-lt小于
-ge大于或者等于
-le 小于或者等于
(())里面可以直接运算

常见的$参数
$0: 脚本本身文件名称
$1: 命令行第一个参数,$2为第二个,以此类推
$*: 所有参数列表
$@: 所有参数列表 但是可以当作数组用
$#: 参数个数
$$: 脚本运行时的PID
$?: 脚本退出码 0正常运行
$! 执行上一个背景指令的PID(后台运行的最后一个进程的进程ID号)
$? 执行上一个指令的返回值 (显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误)

特殊符号
^头 $尾
.匹配除换行符之外的任意单个字符
*匹配前导字符的任意个数
.*任意长度字符
~ home目录
/ 根目录 .当前目录 … 上一层目录
配置文件中!可用作或者的意思

批量执行一些服务器做操作

vim 1.txt
for i in $(cat 1.txt)
scp $i:/root/

写一个服务宕机重启脚本

time=10
while true;do
    if killall -0 httpd &> /dev/null ;then
            :
        else
            /usr/local/apache2/bin/httpd -k restart  &> /dev/null
                echo `date "+%F %T"` restart httpd >> /data/httpd.log
        fi
        sleep $time
done

break和continue区别
break是指在执行循环时,跳出循环,后面的循环也不执行;
而continue指的是跳出本次循环,但是下次循环还会继续执行,只影响一次循环。

三剑客

awk
查看ip
ifcofnig eth0| awk ‘NR==2 {print $2}’
查看nginx访问量最多的10个ip
awk ‘{print $1}’ access.log |sort | uniq -c | sort -nr |head (uniq-c 去重显示次数 sort 排序 nr反方向排序)
三天前.log文件 并删除
find -type f -mtime +3 -name “*.log” -exec rm -f {} ;

sed
打印1-5行
sed -n ‘1,5p’ 1.txt
a在后面添加内容 i在前面插入
在1行后面添加1 sed ‘1a 1’ 在第1行前 sed ‘1i 1’
删除d
删除第一行
sed ‘1d’ ‘2,3d’ 删除2和三行
删除匹配到a的行
sed ‘/a/d’ sed ‘/^$/d’ 删除空行
替换行c
sed ‘/a/c b’ (将带有a的行换成b)
替换字符串s
sed ‘s/a/b/g’ 将全部的a换成b 不加g为第一个
也可以和n,p结合打印匹配到的内容
将匹配到的内容打印
sed -n ‘s/a/b/p’

grep
打印出开头为a的内容 ,以a,b,c开头的行 除了以a,b,c开头的行
grep ^a grep 1 grep [a,b,c]
打印出尾部为a的内容
grep a$
找出除了a开通的结果
grep -v a
查找当前目录下的关键字
grep -r “关键字” ./


  1. a,b,c ↩︎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值