1 2 3 4

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

posted @ 2021-05-11 10:32  请叫我阿鑫  阅读(75)  评论(0)    收藏  举报