linux常用命令

  1. grep

    grep [-acinv] [--color=auto] '搜寻字符串' filename
    选项与参数:
        -a :将 binary 文件以 text 文件的方式搜寻数据
        -c :计算找到 '搜寻字符串' 的次数
        -i :忽略大小写的不同,所以大小写视为相同
        -n :顺便输出行号
        -v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
        --color=auto :可以将找到的关键词部分加上颜色的显示喔!
    
  2. sed

      sed命令格式
        sed [options] 'command' file(s)
        sed [options] -f scriptfile file(s)
      删除行
        nl /etc/passwd | sed '2,5d' 删除2-5行
        nl /etc/passwd | sed '2d' 删除第2行
        nl /etc/passwd | sed '3,$d' 删除第3行到最后一行
     添加行
        nl /etc/passwd | sed '2a drink tea' 在第二行后面加上
        nl /etc/passwd | sed '2i dirnk tea' 在第二行前面加上
      替换行
     nl /etc/passwd | sed '2,5c No 2-5 number' 将2-5行用No 2-5 number 替换
     数据搜寻并删除
     nl /etc/passwd | sed '/root/d' 搜寻root并删除
     数据搜寻并替换
        sed 's/要被取代的字串/新的字串/g'
    
     去掉 “行首” 带“@”的首字母@
        sed -i 's/^@//' file
     特定字符串的行前插入新行
        sed -i '/特定字符串/i 新行字符串' file
     特定字符串的行后插入新行
        sed -i '/特定字符串/a 新行字符串' file
     特定字符串的删除
        sed -i '/字符串/d' file
    
     显示指定行
     	sed -n '2p' file
     显示指定行到行
     	sed -n '2,8p' file
    
  3. awk

     awk '{pattern+action}' {filenames} pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始
        终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
    
     awk调用方式
        一、命令行方式:
     	  awk [-F field-separator] 'commands' input-file(s)
        二、shell脚本方式
     	  #!/bin/awk
        三、将所有的awk命令插入一个单独文件,然后调用
     	  awk -f awk-script-file input-file(s)
    
      显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添 加"blue,/bin/nosh"
     	cat /etc/passwd |awk -F ':' 'BEGIN {print "name,shell"} {print $1","$7} END {print "blue,/bin/nosh"}'
    
      统计/etc/passwd的账户人数
        awk '{count++;print $0;} END{print "user count is ",count}' /etc/passwd
    
      统计某个文件夹下的文件占用的字节数
     	ls -l |awk 'BEGIN {size=0;} {size=size+$5;} END{print "[end]size is ",size/1024/1024,"M" }'
    
     AWK内置变量
     ARGC 命令行参数个数
     ARGV 命令行参数排列
     ENVIRON 支持队列中系统环境变量的使用
     FILENAME awk浏览的文件名
     FNR 浏览文件的记录数
     FS 设置输入域分隔符,等价于命令行 -F选项
     NF 浏览记录的域的个数
     NR 已读的记录数
     OFS 输出域分隔符
     ORS 输出记录分隔符
     RS 控制记录分隔符
    
  4. du

    读取文件大小
    du -h /filename/
    只显示总和的大小
    du -s /filename/

  5. scp

     复制文件
     scp local_file remote_username@remote_ip:remote_folder
     or
     scp local_file remote_usename@remote_ip:remote_file
     or
     scp local_file remote_ip:remote_folder
     or
     scp local_file remote_ip:remote_file
     
     复制目录
     scp -r /local_folder remote_username@remote_ip:remote_folder
     or
     scp -r local_folder remote_ip:remote_folder
    
  6. route
     添加网关/设置网关:

    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0      #增加一条到达244.0.0.0的路由。
    

    屏蔽一条路由:

    route add -net 224.0.0.0 netmask 240.0.0.0 reject    #增加一条屏蔽的路由,目的地址为224.x.x.x将被拒绝。
    

    删除路由记录:

    route del -net 224.0.0.0 netmask 240.0.0.0
    route del -net 224.0.0.0 netmask 240.0.0.0 reject
    

    删除和添加设置默认网关:

    route del default gw 192.168.1.1
    route add default gw 192.168.1.1
    
  7. vmstat

     -a:显示活跃和非活跃内存
    
     -f:显示从系统启动至今的fork数量 。
    
     -m:显示slabinfo
    
     -n:只在开始时显示一次各字段名称。
    
     -s:显示内存相关统计信息及多种系统活动数量。
    
     delay:刷新时间间隔。如果不指定,只显示一条结果。
    
     count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷。
    
     -d:显示磁盘相关统计信息。
    
     -p:显示指定磁盘分区统计信息
    
     -S:使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024 bytes)
    
     -V:显示vmstat版本信息。
    

    字段说明

      r 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,
     服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。
    
      b 表示阻塞的进程,这个不多说,进程阻塞,大家懂的。
    
     swpd 虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级内存了或者把耗内存的任务迁移到其他机器。
    
     free 空闲的物理内存的大小,我的机器内存总共8G,剩余3415M。
    
     buff Linux/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M
    
     cache cache直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linux/Unix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高 程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。)
    
     si 每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充裕,一切正常。
    
     so 每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。
    
     bi 块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒
    
     bo 块设备每秒发送的块数量,例如我们读取文件,bo就要大于0。bi和bo一般都要接近0,不然就是IO过于频繁,需要调整。
    
     in 每秒CPU的中断次数,包括时间中断
    
     cs 每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好,太大了,要考虑调低线程或者进程的数目,例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并
     发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量
     避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。
    
     us 用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到us接近100,r运行队列达到80(机器在做压力测试,性能表现不佳)。
    
     sy 系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。
    
     id 空闲 CPU时间,一般来说,id + us + sy = 100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,sy是系统CPU使用率。
    
     wt 等待IO CPU时间
    
  8. mpstat

    mpstat [-P {|ALL}] [internal [count]]
    
    参数 解释
       -P {|ALL} 表示监控哪个CPU, cpu在[0,cpu个数-1]中取值
       internal 相邻的两次采样的间隔时间、
    
       count 采样的次数,count只能和delay一起使用
    
       当没有参数时,mpstat则显示系统启动以后所有信息的平均值。有interval时,第一行的信息自系统启动以来的平均信息。从第二行开始,
    

    输出为前一个interval时间段的平均信息。

    字段说明

       %user 在internal时间段里,用户态的CPU时间(%),不包含nice值为负进程 (usr/total)*100
    
       %nice 在internal时间段里,nice值为负进程的CPU时间(%) (nice/total)*100
    
       %sys 在internal时间段里,内核时间(%) (system/total)*100
    
       %iowait 在internal时间段里,硬盘IO等待时间(%) (iowait/total)*100
    
       %irq 在internal时间段里,硬中断时间(%) (irq/total)*100
    
       %soft 在internal时间段里,软中断时间(%) (softirq/total)*100
    
       %idle 在internal时间段里,CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间(%) (idle/total)*100
    
  9. ps

       -A 显示所有进程(等价于-e)(utility)
       -a 显示一个终端的所有进程,除了会话引线
       -N 忽略选择。
       -d 显示所有进程,但省略所有的会话引线(utility)
       -x 显示没有控制终端的进程,同时显示各个命令的具体路径。dx不可合用。(utility)
       -p pid 进程使用cpu的时间
       -u uid or username 选择有效的用户id或者是用户名
       -g gid or groupname 显示组的所有进程。
       U username 显示该用户下的所有进程,且显示各个命令的详细路径。如:ps U zhang;(utility)
       -f 全部列出,通常和其他选项联用。如:ps -fa or ps -fx and so on.
       -l 长格式(有F,wchan,C 等字段)
        -j 作业格式
       -o 用户自定义格式。
       v 以虚拟存储器格式显示
       s 以信号格式显示
       -m 显示所有的线程
       -H 显示进程的层次(和其它的命令合用,如:ps -Ha)(utility)
       e 命令之后显示环境(如:ps -d e; ps -a e)(utility)
       h 不显示第一行
    

把开头为 # 的行过滤掉
grep -Ev '^[[:space:]].*|^#' aliyun_aegis.sh

ps命令找出占用内存资源最多的10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10

内存消耗最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k4|head -10
虚拟内存使用最多的前10个进程
ps auxw|head -1;ps auxw|sort -rn -k5|head -10

原文地址:https://www.cnblogs.com/Mr-Axin/p/14754279.html