Linux常用命令

资源&性能

主要资源关注点:CPU、内存、磁盘、网络、Swap交换区
ps、pstree、iotop、top、dmesg、vmstat、mpstat、
pidstat、iostat、dstat、sar、netstat、strace

  • ps、pstree
    1、查看系统进程:ps aux | grep "key_word"
    2、查看系统进程(类似树的形式输出):ps axjf
    3、查看进程所打开的线程情况:ps -Lf $pid
    4、输出系统的程序树(类似第3点):pstree -Aup

  • iotop - 查看进程关于磁盘IO的读写情况

  • top - 查看系统、进程负载情况

    • 按键命令
      M : 按内存排序
      P : 按CPU使用率排序
      N : 按PID排序
      1 : 查看各个cpu核的数据
    • 详细解释说明
  • lsof -p $port - 查看进程所打开的文件句柄

  • dmesg 或者 /var/log/messages 查看系统日志

  • vmstat - 查看系统资源(CPU/memory/io)运行变化情况

  • mpstat -P ALL 1 - cpu的使用的变化情况

  • pidstat 1 - 查看进程cpu资源使用变化情况

  • iostat -xz 1 - 查看设备IO变化情况

  • sar -n DEV 1 - 查看网卡流量

  • netstat - 查看系统网络连接情况

# 查看系统全部连接情况
netstat -anp
# tcp协议的
netstat -antp 
# udp协议的
netstat anup 
# listening状态的
netstat anlp 
# 查看端口占用情况
netstat -anp | grep 8080
lsof -i :8080
  • Reference Docs
    how to understand system load average
    http://www.infoq.com/cn/news/2015/12/linux-performance
    http://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/strace.html?highlight=strace
样本拆分&统计分析
  • awk
# 1、简单列拆分、输出
# test.txt
name1,10,testa
name2,20,testb
name3,40,testc
name4,90,testd
# 截取第1列名称列表
cat test.txt | awk -F ',' '{print $1}' 
# 根据多种分隔符(,| |:)做拆分
cat test.txt | awk -F '[ |,|:]+' '{print $1,$3,$5}' 

# 2、样本统计分析
# test_stat.txt
name3,40
name4,90
name3,78
name5,3
name4,21
name5,31
# 输出 名称,总耗时,总次数,平均耗时
cat test_stat.txt | awk 'BEGIN{
    FS="," ;
}
{
    NAMES[$1]=$1 ;
    COUNTS[$1]++ ;
    SUMS[$1] += $2 ;
}
END{
    for(i in NAMES){
        name=NAMES[i] ;
        count=COUNTS[name] ;
        sum=SUMS[name] ;
        avg=sum/count ;
        print name"\t"sum"\t"count"\t"avg ;
    }
} '
  • 统计排序:awk、uniq、sort
# 假定access.log各列以空格分隔,第一列为访问ip
# 统计ip访问量
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr 
# 统计ip访问量,且按ip排序
cat access.log | awk '{print $1}' | sort | uniq -c | sort -nr | sort -k 2 
  • Reference Docs
    鸟哥的Linux私房菜-命令快速索引
    http://linuxtools-rst.readthedocs.io/zh_CN/latest/
    http://www.habadog.com/2011/05/22/awk-freshman-handbook/
一些内核参数配置调优
  • 配置文件
# sysctl 帮助手册
  man sysctl 
# 系统当前配置信息
  sysctl -a 
# 配置文件
  /etc/sysctl.conf 
  • TCP/IP协议栈配置
# 相关配置参数
cat /etc/sysctl.conf | grep "net.ipv4.tcp_"

# 面对 syn flood 攻击时,服务端的一些配置调整还是有必要的
# 向客户端发送连接建立ack信号的重试次数
net.ipv4.tcp_synack_retries = 1
# 处理不过来则直接丢弃,拒绝连接
net.ipv4.tcp_abort_on_overflow = 1
# 增大tcp syn 连接数
net.ipv4.tcp_max_syn_backlog = 262144
  • Reference Docs
    https://coolshell.cn/articles/11564.html

你可能感兴趣的:(Linux常用命令)