【linux系统】命令学习(八)bash 编程实战学习


常见shell : bash   sh  zsh

windows: git bash    cygwin

MAC : terminal iterm

netstat

  是linux下用于显示网络状态的命令。通过它能统计端口情况,网络连接状态,路由表等信息。在网络开发或运维中,经常会使用netstat来查看网络状态。

  常用参数说明:

    -l或–listening 显示监控中的服务器的Socket。
    -n或–numeric 直接使用IP地址,而不通过域名服务器。
    -p或–programs 显示正在使用Socket的程序识别码和程序名称。
    -t或–tcp 显示TCP传输协议的连线状况。
  日常用法:

    netstat -tnlp
    netstat -tnp
  原文链接:https://blog.csdn.net/weixin_43627624/article/details/107133778

范例:

  netstat -tnp | grep ":22" | awk '{print $5}' | awk -F: '{print $1}' | uniq -c | sort -nr |wc -l

  查看当前网络连接状态,查找关于:22的网络连接,取第五列数据,在第五列数据中以:为分隔符取第一列,去重并统计数量,按数字排序并倒序排序,统一共有多少行。

   head -3  jmeter.log   

  查看前三行

  more jmeter.log 

  less jmeter.log     -----less 更好用,查询,上下键可以浏览数据

  diff 1 2  比较1 和 2 的区别

  cat 120601.log | awk '{print $1}' | sort | uniq -c | sort -nr | head -n 3

  less 120601.log | awk '{print $7}'| awk -F? '{print $1}' | grep "/topics/[0-9]*/"

  less 120601.log | awk '{print $7}'| awk -F? '{print $1}' | grep  "/topics/[0-9][0-9]5" 

  less 120601.log | grep topics | grep -E "/topics/[0-9]{1,10}[?]{1}" | sed -E 's#[0-9]{1,10}#:int:#g' | awk '{print $7}' | sort | uniq -c

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g'

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g' | sed 's#/topics/[0-9]*$#/topics/topics#' | sort | uniq -c | sort -nr |head -5

  grep topics 120601.log | awk '{print $7}' | sed 's#?.*##g' | sed 's#/topics/[0-9]*$#/topics/topics#' | sed 's#/topics/[0-9]*/replies/[0-9]*/.*#topics/replies#' | sort | uniq -c | sort -nr |head -5

  grep topics 120601.log | grep -v "topoooo"   过滤掉topoooo的信息

http常见协议

  200 30x 400 404 500 503 

 ps :查看 Linux 中当前运行的进程的命令

  man ps

  ps -ef 斜杠分隔 标准格式输出 ps -e  打印所有进程

    UID    //用户ID、但输出的是用户名 
    PID    //进程的ID 
    PPID    //父进程ID 
    C      //进程占用CPU的百分比 
    STIME  //进程启动到现在的时间 
    TTY    //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。 
    CMD    //命令的名称和参数  

  ps -eo 获取少数字段,可以进行分析

  ps -o pid 只打印有用的数据

  ps aux  用BSD的格式来显示

    USER      //用户名 
    %CPU      //进程占用的CPU百分比 
    %MEM      //占用内存的百分比 
    VSZ      //该进程使用的虚拟內存量(KB) 
    RSS      //该进程占用的固定內存量(KB)(驻留中页的数量) 
    STAT      //进程的状态 

      D      //无法中断的休眠状态(通常 IO 的进程); 
      R      //正在运行可中在队列中可过行的; 
      S      //处于休眠状态; 
      T      //停止或被追踪; 
      W      //进入内存交换 (从内核2.6开始无效); 
      X      //死掉的进程 (基本很少见); 
      Z      //僵尸进程; 
      <      //优先级高的进程 
      N      //优先级较低的进程 
      L      //有些页被锁进内存; 
      s      //进程的领导者(在它之下有子进程); 
      l      //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads); 
      +      //位于后台的进程组;
    START    //该进程被触发启动时间 
    TIME      //该进程实际使用CPU运行的时间

  for i in {1..8};do sleep 1 ; ps -o %cpu -p pid; done   -------ps -o %cpu -p pid循环八次

  for i in {1..8};do sleep 1 ; ps -o %cpu,%mem -p pid; done   -------ps -o %cpu -p pid循环八次

kill -9 pid    关闭进程

top

  经常用来监控linux的系统状况,是常用的性能分析工具,能够实时显示系统中各个进程的资源占用情况。

  -d:number代表秒数,表示top命令显示的页面更新一次的间隔。默认是5秒。

   -b:以批次的方式执行top。

  -n:与-b配合使用,表示需要进行几次top命令的输出结果。

  -p:指定特定的pid进程号进行观察。

  ?:显示在top当中可以输入的命令

  P:以CPU的使用资源排序显示

  M:以内存的使用资源排序显示

  N:以pid排序显示

  T:由进程使用的时间累计排序显示

  k:给某一个pid一个信号。可以用来杀死进程

  r:给某个pid重新定制一个nice值(即优先级)

  q:退出top(用ctrl+c也可以退出top)。

  top -b -p 1132 -n 2 -d 1 | grep --line-buffered 1132 | awk 'BEGIN{print "CPU MEM"}{print $9,$10;c+=$9;m+$10}END{print "-------";print c/NR,M/NR}'

   top -b -p 1132 -n 2 -d 1 | grep --line-buffered 1132 | awk 'BEGIN{print "CPU MEM avgc avgs"}{c+=$9;m+=$10}{print $9,$10,c/NR,m/NR}'

   

   jobs -l 查看当前运行进程

  kill pid 杀掉命令