Linux常见命令学习

Linux下进程状态详解

  1. top 、uptime 等命令展现出的 load average,并非 CPU load average,而是系统整体负载,包括了对磁盘资源的请求
    但是通常情况下,load average / CPU core number > 1 暗示系统可能是CPU BOUND
    计算公式: load average = TASK_RUNNING + TASK_UNINTERRUPTABLE
    Linux下进程状态的划分:
    • R:TASK_RUNNING
    • S:TASK_INTERRUPTABLE
    • D:TASK_UNINTERRUPTABLE:这个状态一般出现在进程与外部设备交换,内核的一些处理流程是无法被中断的,如果此时允许中断,原有流程被插入一段处理异步信号的流程,进程与外部设备交互过程被中断,那么外部设备可能陷入不可控的状态,因此,此时不响应异步信号(kill -9 无法杀死)
    • Z:TASK_ZOMBIE
Linux /proc子系统文档
  1. 常见目录项
    • cmdline:命令行参数
    • cwd
    • exe
    • fd
    • maps
    • cgroup
top命令详解
  1. top命令常见参数
    • -c :输出完整命令行
    • -H:显示每个线程而非进程的汇总 (通过pthread_setname_np)更友好
    • -p pid:显示特定进程的信息
    • 交互命令:
      • m:切换显示内存的方式
      • t:切换显示CPU负载的方式
      • c:切换显示完整命令行与否
      • M:按内存排序
      • P:按CPU排序
      • T:按运行时间排序
  2. perf perf record 通过挂载到某个进程上生成 perf.data,perf report 读取perf.data 获得信息
  3. address-sanitizer:原理是 shadow poison,能够探测dangling pointer、buffer overflow、memory leak
    • [Use after free] (dangling pointer dereference)
    • [Heap buffer overflow]
    • [Stack buffer overflow]
    • [Global buffer overflow]
    • [Use after return]
    • [Use after scope]
    • [Initialization order bugs]
    • [Memory leaks]
iostat命令详解
  1. iostat 各列说明:一般开启 -x 参数获得详细数据
    • rrqm/wrqm:向该设备请求次数
    • r/w:每秒读写次数
    • rkB/wkB:每秒读写数据量
    • avgrq_sz:每次IO操作的平均扇区数
    • avgqu_sz:每次IO操作的等待队列长度
    • await:IO等待时间(ms)
    • svctm:IO处理时间(ms)
    • util:IO队列非空的时间比例
【Linux常见命令学习】netstat命令详解
  1. netstat参数
    • -a:列出所有(不含listen)
    • -t/u : tcp/ udp
    • -n :优先数字
    • -l: 列出处于监听状态
    • -p:列出程序名
    • -s:按照协议划分
  2. 丢包场景划分
  • 缓冲区满:netstat RecvQ很大
  • 半连接满:syn并发数量大,syn flooding。 调节net.ipv4.tcp_max_syn_backlog
  • 链路丢包、网卡丢包

    推荐阅读