Python 测开28期 - 小锅巴 - Linux与Bash- 学习笔记

Linux

  • Linux的发行版:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS(CentOS保有量较高,下面安装软件的命令均是CentOs系统)
  • SSH方式登录系统:ssh -p 端口号 用户名@服务的ip
    • 安装ssh:yum install -y openssl openssh-server
  • 图形化界面登录
    • xshell、SecureCRT、mobaxterm,xshell可能会收费,推荐用最后一个

Linux性能与统计命令

  • 性能统计命令

    • 常用的性能指标:cpu-代表算法的高效性 mem(内存)-数据结构使用的合理性 net io(网络)-网络IO
    • 临时性分析 系统性分析需要借助监控工具:prometheus/grafana
      • 查看cpu:cat /proc/cpuinfo
      • 查看内存:free ps top
        • free -m
        • 进程级别的内存分析:ps -e -o uid,pid,ppid,pcpu,pmem,rss,vsz,comm --sort -%mem | head -10
        • top命令
      • 网络连接统计:
        • netstat -tnp | head -10
        • netstat -tn | awk ‘NR>2{print $NF}’| sort | uniq -c | sort -nr
  • 常用统计命令

    • 排序
      • sort :常用参数如下:
        • ‘-b’:忽略开头的空白字符
        • ‘-f’:将小写字母看做大写字母
        • ‘-h’:根据存储容量排序(KB/MB/GB)
        • ‘-n’:按数字排序
        • ‘-o’:把结果写入文件
        • ‘-r’:以相反的顺序来排序
        • ‘-t’:指定分隔符,默认为空格
        • ‘-V’:按照数字版本排序
        • ‘-k’:指定排序的关键字,与-t参数配合
    • 去重
      • uniq:常用参数如下:
        • ‘-c’:统计重复出现的次数
        • ‘-d’:所有临近的重复行只被打印一次,重复次数要大于等于2
        • ‘-D’:所有临近的重复行都将被打印
        • ‘-f’:跳过对前n个列的比较
        • ‘-s’:跳过对前n个字符的比较
        • ‘-W’:只对每行前n个字符比较
    • 统计
      • wc:常用参数如下:
        • ‘-c’:统计字节数:chars
        • ‘-l’:统计行数
        • ‘-w’:统计单词数
        • ‘-L’:打印最长行的长度
  • 进程与线程

    • 概念:进程:可执行程序的运行态,操作系统调度的基本单位,线程的容器,进程本身包含指令/数据等资源 ; 线程:进程中被执行的最小单元,cpu调度的基本单位,线程带有指令,数据等资源
    • 常用的进程管理命令:
      • ps:进程列表快照
        • ps -ef:获得所有进程列表
        • ps aux:获取所有进程列表,并提供更多的可用数据
        • ps -o pid,ppid,psr,thcount,tid,cmd -M :自定义输出指标
      • top:交互式进程观测
      • kill:结束进程
      • fg:进程切换到前台
      • bg:进程切换到后台
      • ctrl z:挂起进程

Linux三剑客:grep/awk/sed

  • grep:内容检索

    • grep pattern file:获取行
    • grep -o pattern file:获取内容
    • grep -A -B -C pattern file:获取上下文
    • grep pattern -r dir/:递归检索
    • grep -H pattern /temp/l:展示匹配的文件名
    • grep -l pattern /temp/l:只展示匹配的文件名
    • grep -i pattern file:忽略大小写
    • grep -v pattern file:忽略匹配的行
    • grep -E pattern file:使用扩展正则表达式
    • grep 111 -r /tmp/demo/ --include “11*” :文件范围和目录范围约束

    • 进程检索:进程过滤比较特殊,grep本身会开启新的进程,所以要单独的过滤掉grep本身的进程
    • 检索ssh进程:ps -ef | grep ssh
    • 检索ssh进程并过滤grep本身进程:ps -ef | grep ssh | grep -v grep
  • awk:

    • awk是linux下的一个命令,同时也是语言解析引擎。awk具备完整的变成特性,如:执行命令,网络请求;
    • 语法:awk ‘pattern {action}’
    • awk上下文变量:
      • 开始 BEGIN 结束 END
      • 行数:NR
      • 字段与字段数:$1$2…$NF NF
      • 整行:$0
      • 字段分割符:FS (一个整体?)
      • 记录分隔符:RS (拆分一个整体变成多个子体的时候?)
      • 输出数据的字段分隔符:OFS
      • 输出字段的行分隔符:ORS
    • 字段变量的用法:
      • ‘-F’:参数指定字段分隔符,可以使用 | 指定多个多分隔符 -F’<|>’
      • BEGIN{FS=“_”}:可以表示分隔符
      • $0:代表当前记录
      • $1:代表第一个字段
      • $N:代表第n个字段
      • $NF:代表倒数第一个字段
      • $(NF-1):代表倒数第二个字段
    • pattern表达式:
      • 正则匹配:$1~/pattern/pattern/
      • 比较表达式:$2>2 $1=“b”
    • awk pattern正则匹配案例
      • 开始和结束:awk ‘BEGIN{}END{}’
      • 正则匹配:
        • 整行匹配:awk ‘/Running/’
        • 字段匹配:awk ‘$2~/xxx/’
      • 行数表达式:第2行—awk ‘NR==2’ 忽略第一行—awk ‘NR>1’
      • 区间选择:awk ‘/aa/,/bb/’ awk ‘/1/,NR==2’

Bash编程语法