点点点工程师自我提升&运维方向----shell编程基础知识盘点

shell编程

1. 工作范围

    1. 海量运维&运营规划

        1. 规划
  1. 架构规划
  2. IDC规划
  3. ISP规划
  4. 服务器规划
  5. 预算规划
        2. 管理
  1. 配置管理
  2. 事件管理
  3. 问题管理
  4. 成本管理
  5. 容量管理
  6. 资源管理
  7. 需求管理
        3. 流程/规范
  1. 项目立项规范
  2. 运营故障分级和处罚规范
  3. 重大运营故障处理流程
  4. 环境一致性规范
  5. PHP规范
  6. 运营资源申请规范
  7. IDC变更流程
  8. 预算管理规范
        4. 系统/平台
  1. CDN平台
  2. 静态应用平台
  3. 点击流系统
  4. 动态应用平台
  5. 数据库平台
  6. 下载平台
  7. 网络健康系统
  8. 经营分析系统
  9. 存储平台
  10. 质量检测系统
  11. 流媒体平台
  12. GSLB管理系统
  13. BOSS系统
  14. 自动发布系统
  15. 立体监控系统
  16. 站点分析系统
  17. 统一告警系统
  18. 运维工具系统
        5. 监控
  1. URL监控
  2. LVS监控
  3. IDC监控
  4. 数据库监控
  5. 模块监控
  6. 站点监控
  7. 响应监控
        6. 告警
  1. 告警模型
  2. 告警收敛
  3. 告警统计
  4. 告警关联
        7. 安全
  1. 漏洞扫描
  2. 域名劫持扫描
  3. 挂马扫描
  4. CGI扫描
  5. 网页篡改扫描
        8. 考核
  1. 运营质量考核
  2. 架构能力考核
  3. 运营预算考核
        9. 优化
  1. 速度优化
  2. 成本优化
  3. ISP优化
  4. CDN优化
  5. 告警优化
  6. 故障预案
  7. 故障演习
    在这里插入图片描述

2. 三剑客&find命令

2.1. grep

2.2. sed

行文件编辑工具
sed [参数] ‘<匹配条件> [动作]’ [文件名]

2.2.1. 参数
  1. -n 取消静默输出
  2. -i 对文件进行编辑
2.2.2. 动作
  1. i 当前行新增
  2. d 删除匹配内容
  3. s 替换匹配内容
  4. p 查找指定内容
2.2.3. 例
1. 替换某一行/列的值
#!/bin/bash
sed -i '行号s#原内容#替换后的内容#列号' [文件名]
2. 全文替换
#!/bin/bash
sed -i 's#原内容#替换后的内容#g' [文件名]

2.3.3. awk

文档编辑工具
awk [参数] ‘[动作]’ [文件名]

2.3.1. 参数
  1. -F 指定列分隔符
  2. -f 调用脚本
  3. -v 定义变量
2.3.2. 常见动作
  1. print 显示内容
  2. $0 显示当前行的所有内容
  3. $n 显示第n列的所有内容
2.3.3. 内置变量
  1. FILENAME 当前输入的文件名,变量只读
  2. NR 指定显示行的符号
  3. OFS 输出格式的列分隔符,缺省是空格
  4. FS 输入文件的列分隔符,缺省是连续空格和Tab
2.3.4. 动作组成
  1. BEGIN {命令} 初始代码块,和变量相关
  2. /pattern/ {命令} 匹配,执行代码块
  3. END {命令} 结束代码块,信息输出相关
2.3.5. 例
1. 列出当前目录中大于500字节的文件信息
#!/bin/bash
ls -l | awk '{ if (( $5>=500 )) print "文件:" $9 "\t" "文件大小:" $5 "B"}'
2. 列出当前目录中大于等于500字节的普通文件信息
#!/bin/bash
ls -l | awk '{ if (( $5>=500 && /^_/ )) print "文件:" $9 "\t" "大小:" $5 "B" }'

2.4. find命令

find [路径] [参数] [关键字] [动作]

2.4.1 参数
  1. -name 按文件名查找
  2. -user 按文件属主查找文件
  3. -group 按文件属组查找文件
  4. -type 查找某一类型文件
    1. b 块设备文件
    2. d 目录
    3. c 字符设备文件
    4. p 管道文件
    5. l 符号链接文件
    6. f 普通文件
2.4.2 关键字
  1. -size n(K|M|G) : c ---- 查找文件长度为n块的文件,带有c时表示文件长度以字节计。
  2. -perm(/ | -)权限 ---- 按照文件权限来查找文件. / ---- 表示有一个权限匹配即可 - ---- 表示相反权限匹配才可
  3. -mtime (-|+) n ---- 查找n天数(内|外)修改的文件
  4. -ctime (-|+) n ---- 查找n天数(内|外)该变的文件
  5. -atime (-|+) n ---- 查找n天数(内|外)访问的文件
  6. -depth ---- 在查找文件时, 首先查找当前目录中的文件, 然后再在其子目录中查找
  7. mindepth n ---- 在查找文件时, 查找当前目录中的第n层目录文件, 然后再在其子目录中查找
  8. -path “子目录” ---- 在指定目录的子目录下查找, 一般与-prune使用
  9. -prune ---- 在查找文件时, 忽略指定内容, 不能和-depth使用, 否则会自动忽视prune
  10. -newer ---- 查找比指定文件新的文件
  11. ! ---- 表示取反
2.4.3 动作详解
  1. print ----- 默认选项, 显示名称, -o -print 表示不仅仅显示目录名, 还显示目录里面的文件名
  2. -ls ---- 显示文件属性
  3. *-exec 命令 {} * ---- 使用命令对查找结果进行处理, 查找结果使用"{}"来表示
2.4.4 例
1. 在当前系统中查找文件类型为普通文件的文件
#!/bin/bash
find /tmp -type f
2. 根目录下查找5日以内更改的文件
#!/bin/bash
find / -mtime -5
3. 在tmp目录下查找3日以前更改的文件
#!/bin/bash
find /tmp/ -mtime +3
4. 在目录下查找不包含backup子目录
#!/bin/bash
find /data/scripts -path "/data/scripts/backup" -prune -o -print
5. 忽略多个文件夹
#!/bin/bash
find . \{-path "./backup" -o -path "./backup2" \} -prune -o -print
6. 以列表的方式查看查找到的文件
#!/bin/bash
find /etc -perm -640 -1s
7. 对查找到的文件进行改名
#!/bin/bash
find ./ -perm -002 -exec mv {} {} .old \ ;
8. 查找到的文件删除
#!/bin/bash
find . -name .svn | xargs rm -rf
9. 查找磁盘中大于3M的文件
#!/bin/bash
find . -size +3000k -exec ls -ld {} ;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值