linux常用命令

1、查看内存占用、cpu占用–top命令

top - 12:51:51 up 445 days, 15:23,  0 users,  load average: 9.52, 8.74, 8.20
Tasks:  33 total,   1 running,  32 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.5 us,  3.4 sy,  3.1 ni, 86.3 id,  0.1 wa,  0.2 hi,  0.3 si,  0.0 st
KiB Mem : 25585168+total, 23169940 free, 13385299+used, 98828736 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 12008969+avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                       
 850160 root      20   0 18.985g 362072  22248 S 231.3  0.1   0:11.96 java                                                                                                                                                          
  67593 root      20   0 41.261g 598536  18364 S   3.3  0.2 261:39.98 node                                                                                                                                                          
 731887 root      20   0 15.362g 1.389g   3088 S   1.7  0.6  42:44.79 qemu-system-aar                                                                                                                                               
     73 root      20   0 6279812 5.051g  11468 S   1.0  2.1  41:22.82 node                                                                                                                                                          
      1 root      20   0   18384    276      0 S   0.0  0.0   0:00.19 start_docker.sh                                                                                                                                               
      8 root      20   0   61608    936    456 S   0.0  0.0   0:00.00 sudo                                                                                                                                                          
     10 root      20   0  718356  24536   5180 S   0.0  0.0   0:00.60 node        

这是top命令的输出解释:

  1. 系统信息行(第一行):

    • top - 12:51:51 up 445 days, 15:23, 0 users: 显示当前时间(12:51:51),系统已运行时间(445天15小时23分钟),以及当前没有用户登录。
    • load average: 9.52, 8.74, 8.20: 系统负载平均值,分别代表过去1分钟、5分钟和15分钟的负载情况。这些数字表示系统正在处理的进程数目,越高表示负载越重。
  2. 任务信息行(第二行):

    • Tasks: 33 total, 1 running, 32 sleeping, 0 stopped, 0 zombie: 显示当前任务的统计信息,包括总任务数(33个)、正在运行的任务数(1个)、睡眠中的任务数(32个),以及已停止(stopped)和僵尸(zombie)状态的任务数。
  3. CPU使用情况行(第三行):

    • %Cpu(s):  6.5 us,  3.4 sy,  3.1 ni, 86.3 id,  0.1 wa,  0.2 hi,  0.3 si,  0.0 st
      

      : 显示CPU的使用率信息,具体含义如下:

      • us(User CPU time):用户空间程序占用CPU的时间比例。
      • sy(System CPU time):内核空间程序占用CPU的时间比例。
      • ni(Nice CPU time):调整过优先级的任务占用CPU的时间比例。
      • id(Idle CPU time):CPU空闲时间比例。
      • wa(IO wait CPU time):CPU等待IO完成的时间比例。
      • hi(Hardware IRQ):硬中断(hardware interrupt)时间比例。
      • si(Software IRQ):软中断(software interrupt)时间比例。
      • st(Steal time):被虚拟化环境偷取的时间比例。
  4. 内存使用情况行(第四行):

    • KiB Mem : 25585168+total, 23169940 free, 13385299+used, 98828736 buff/cache
      

      : 显示内存使用情况的详细信息:

      • total:总内存量。
      • free:空闲内存量。
      • used:已使用的内存量。
      • buff/cache:用作缓冲区和缓存的内存量。
  5. 交换空间使用情况行(第五行):

    • KiB Swap: 0 total, 0 free, 0 used. 12008969+avail Mem: 显示交换空间(swap)使用情况,这里交换空间未被使用。
  6. 进程列表

850160 root 20 0 18.985g 362072 22248 S 231.3 0.1 0:11.96 java:显示了一个Java进程,占用了231.3%的CPU,使用了362072 KiB的物理内存。

当使用 top 命令查看系统进程时,输出的每一列代表以下内容:

  1. PID: 进程ID,是操作系统分配给每个进程的唯一标识符。
  2. USER: 启动进程的用户名。
  3. PR: 进程的调度优先级 (Priority),数值越低优先级越高。
  4. NI: 进程的nice值,nice值用于调整进程的优先级,数值越高优先级越低。
  5. VIRT: 进程占用的虚拟内存大小 (Virtual Memory),包括进程使用的库、代码和数据。
  6. RES: 进程占用的物理内存大小 (Resident Set Size),即实际占用的RAM大小。
  7. SHR: 进程使用的共享内存大小。
  8. S: 进程的状态,通常包括:
    • S: Sleeping (休眠状态)
    • R: Running (运行状态)
    • D: Disk sleep (磁盘休眠,进程正在等待I/O完成)
    • Z: Zombie (僵尸状态,进程已经终止,但父进程尚未收到退出状态)
    • T: Stopped (停止状态)
  9. %CPU: 进程占用CPU的百分比。
  10. %MEM: 进程占用内存的百分比。
  11. TIME+: 进程启动后占用CPU的累计时间。
  12. COMMAND: 启动进程的命令行。

根据你提供的示例输出:

  • PID: 850160
  • USER: root
  • PR: 20
  • NI: 0
  • VIRT: 18.985g (虚拟内存约18.985 GB)
  • RES: 362072 (物理内存约362072 KB,即约353 MB)
  • SHR: 22248 (共享内存约22248 KB)
  • S: S (进程状态为运行状态)
  • %CPU: 231.3% (占用CPU的百分比为231.3%)
  • %MEM: 0.1% (占用内存的百分比为0.1%)
  • TIME+: 0:11.96 (累计占用CPU时间为11.96秒)
  • COMMAND: java (启动该进程的命令为java)

这些信息帮助系统管理员了解每个进程在系统资源(如CPU和内存)方面的使用情况,以便及时调整和优化系统性能。

关于进程的%cpu > 100

top命令中,如果某个进程的 %CPU 大于100%,通常有以下几种可能的解释:

  1. 多核CPU影响: 当系统有多核CPU时,一个进程的总 CPU 使用率可能会超过100%。例如,如果一个进程在一个四核系统上占用了400%的CPU,这意味着它完全利用了四个核心的各自25%。
  2. 超线程或多线程: 如果系统支持超线程或多线程技术,一个进程可以同时在多个逻辑CPU核心上运行。因此,一个进程的总 CPU 使用率可能会超过物理CPU核心数量的限制。
  3. 测量时间间隔内的瞬时性: top命令默认每隔几秒钟刷新一次数据,然后计算CPU使用率。如果在测量时间间隔内,一个进程的CPU使用率非常高,可能会导致显示的 %CPU 超过100%。
  4. 统计和显示问题: 有时候top命令的统计数据可能存在误差或显示问题,尤其是在处理瞬时高负载时。这可能导致某些进程的 %CPU 显示异常。

通常情况下,如果一个进程的 %CPU 超过100%,特别是在多核或多线程系统中,这是正常现象。这种情况下,top会将所有核心的使用情况累加到一个进程的 %CPU 中,以反映该进程在整个系统中所占用的CPU资源。

2、查看进程–ps命令

命令参数

  • -e:显示所有进程。
  • -f:全格式显示。
  • -l:长格式显示。
  • -a:显示终端上的所有进程,包括其他用户的进程。
  • -u:显示进程的详细状态。
  • -x:显示没有控制终端的进程。
  • -T:显示当前线程的层次结构。

直接用:

ps -efxl

输出

F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 18880 3676 - Ss+ pts/0 0:00 /bin/bash /docker_start.sh PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin HOSTNAME=205ffce4e153 TERM=xterm NE_RUN_OPTION=all SNAP_VERSION=vm-20240807020223 WECODE_ONLINE=Fa

  • USER: 进程的拥有者。这通常是运行该进程的用户帐户的名称。
  • PID: 进程ID。每个进程都有一个唯一的ID,用于标识该进程。
  • %CPU: 该进程占用的CPU使用率百分比。
  • %MEM: 该进程占用的物理内存使用率百分比。
  • VSZ: 虚拟内存大小,单位是KB。这表示进程使用的虚拟内存量。
  • RSS: 常驻集大小,单位是KB。这表示进程在物理内存中占用的固定大小。
  • TTY: 终端类型。如果进程没有与任何终端关联,则显示为"?"。
  • STAT: 进程状态。这描述了进程的当前状态,例如运行中、休眠等。
  • START: 进程启动的时间。
  • TIME: 该进程实际使用CPU的时间,单位是小时:分钟:秒。
  • COMMAND: 启动进程的命令名称或命令行。

3、查看磁盘占用情况–df命令

直接用

df -ha

4、查找文件–find命令

find命令格式:

find   path  -option 

path:要查找的目录路径。

最常用的就是

find dstPath -name "XXX.cpp"

options :表示查找方式

options常用的有下选项:

-name   filename               #查找名为filename的文件
-perm                                #按执行权限来查找
-user    username             #按文件属主来查找
-group groupname            #按组来查找
-mtime   -n +n                   #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime    -n +n                   #按文件访问时间来查找文件,-n指n天以内,+n指n天以前
-ctime    -n +n                  #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup                          #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser                            #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-type    b/d/c/p/l/f             #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size      n[c]                    #查长度为n块[或n字节]的文件
-mount                            #查文件时不跨越文件系统mount点
-follow                            #如果遇到符号链接文件,就跟踪链接所指的文件
-prune                            #忽略某个目录

5、查看网络连接–netstat命令和ss命令

常见选项

-t,tcp
-u,udp
-l, --listening          display listening server sockets
-a, --all                display all sockets (default: connected)
-n, --numeric            don't resolve names
-p,对应进程

-r # 查看路由表

命令输出:

netstat -alntup
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:2601          0.0.0.0:*               LISTEN      160/zebra
tcp        0      0 127.0.0.1:2605          0.0.0.0:*               LISTEN      165/bgpd -
tcp6       0      0 :::179                  :::*                    LISTEN      165/bgpd
tcp6       0      0 :::22                   :::*                    LISTEN      71/sshd
udp        0      0 0.0.0.0:4789            0.0.0.0:*                           -
udp        0      0 0.0.0.0:8888            0.0.0.0:*                           2282/qemu-system-aa

ss命令常见选项和用法和netstat一样

6、查看进程打开的文件监听的端口–lsof命令

命令 lsof ( list opened files )负责列出系统中已经打开的文件,包括普通文件,目录,块特殊文件,字符特殊文件,正在执行的文本引用,库,流或网络文件(例如:网络套接字,NFS文件或UNIX域套接字)。

常见选项:

-p pid : 输出指定进程打开的文件;
-i:port

查看监听22端口的:

lsof -i:22

7、抓包–tcpdump

tcpdump option proto direction type
  • option:-i 指定网卡,-w filename(写入文件),-r filename (解析文件)
  • proto:tcp、ip、udp、 icmp
  • direction:dst、src
  • type:net、host、port

例子:

tcpdump -i eth0 src port 22 or dst port 22

参考:全网最详细的 tcpdump 使用指南 - 王一白 - 博客园 (cnblogs.com)

8、测试程序运行时间–time命令

time + 可执行文件
time + shell命令

time 命令用于测量程序运行所花费的时间,包括用户CPU时间、系统CPU时间以及实际时间。当你在命令行中运行 time 命令来执行一个程序时,它会输出三个值:

  1. 实际时间(real):从命令开始执行到命令结束的总时间,单位为秒。这个时间包括了整个命令执行的时间,包括CPU执行时间、IO等待时间等。
  2. 用户CPU时间(user):程序在用户态运行所花费的CPU时间,即程序执行自身代码的时间总和。在多核处理器上并行执行的时间总和也会计入。
  3. 系统CPU时间(sys):程序在内核态运行所花费的CPU时间,即执行系统调用的时间总和。

这三个时间通常在 time 命令的输出中以如下格式显示:

time ls
.......
real    0m1.234s
user    0m0.123s
sys     0m0.456s
  • real 表示实际时间,单位为分钟(m)和秒(s)。
  • user 表示用户CPU时间,同样以分钟和秒为单位。
  • sys 表示系统CPU时间,同样以分钟和秒为单位。

9、统计文本信息–wc命令

wc -w file # 统计单词数
wc -l file # 统计行数

10、文本处理命令–awk命令

逐行读取文本,默认以空格或tab键为分隔符进行分隔,将分隔所得的各个字段保存到内建变量中,并按模式或者条件执行编辑命令。

语法:注意要有单引号

awk options 'pattern {action}' file

选项参数说明:

  • options:是一些选项,用于控制 awk 的行为。 -F <分隔符> : 指定输入字段的分隔符,默认是空格。使用这个选项可以指定不同于默认分隔符的字段分隔符。
  • pattern:是用于匹配输入数据的模式。如果省略,则 awk 将对所有行进行操作。
  • {action}:是在匹配到模式的行上执行的动作。如果省略,则默认动作是打印整行。

例子:以":"为分隔符,对每行进行分割,打印第一和第二项’{print $1 $2}’

awk -F':' '{print $1 $2}' start-71.sh

11、文本匹配(正则表达式)–grep命令

grep 命令是一项非常有用的工具。grep(全称:Global Regular Expression Print)命令用于根据给定的正则表达式搜索文本,并将匹配的行打印出来

正则表达式匹配符

^    # 锚定行的开始 如:'^grep'匹配所有以grep开头的行。    
$    # 锚定行的结束 如:'grep$' 匹配所有以grep结尾的行。
.    # 匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。    
*    # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。  
+    # 匹配1个或多个先前字符
.*   # 一起用代表任意字符。   
[]   # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。    
[^]  # 匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。    
(..)  # 标记匹配字符,如'(love)',love被标记为1。    
<      # 锚定单词的开始,如:'<grep'匹配包含以grep开头的单词的行。    
>      # 锚定单词的结束,如'grep>'匹配包含以grep结尾的单词的行。    
x{m}  # 重复字符x,m次,如:'0{5}'匹配包含5个o的行。    
x{m,}   # 重复字符x,至少m次,如:'o{5,}'匹配至少有5个o的行。    
x{m,n}  # 重复字符x,至少m次,不多于n次,如:'o{5,10}'匹配5--10个o的行。   
\w    # 匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。   
\W    # \w的反置形式,匹配一个或多个非单词字符,如点号句号等。   
\b    # 单词锁定符,如: '\bgrep\b'只匹配grep。  

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值