常用命令

1.查看端口监听状态

lsof -i:端口, 用于查看某一端口的占用情况

# lsof -i:22      
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
sshd    13413 root    3u  IPv4 120117493      0t0  TCP *:ssh (LISTEN)

netstat -tunlp, 用户显示tcp,udp的端口和进程等相关情况

# netstat -tunlp | grep 22
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      13413/sshd

2.top命令

Linux top命令用于实时显示 process 的动态

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]

2.1 参数说明:

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称S : 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
  • s : 安全模式,将交谈式指令取消, 避免潜在的危机
  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的行程
  • n : 更新的次数,完成后将会退出 top
  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

2.2 交互命令:

  • Ctrl+L:擦除并且重写屏幕
  • h:显示帮助画面,给出一些简短的命令总结说明
  • k:终止一个进程,系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号
  • i:忽略闲置和僵死进程,这是一个开关式命令
  • q:退出程序
  • r:重新安排一个进程的优先级别.系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值.输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权,默认值是10
  • S:切换到累计模式
  • s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms.输入0值则系统将不断刷新,默认值是5s
  • f或者F:从当前显示中添加或者删除项目
  • o或者O:改变显示项目的顺序;
  • l:切换显示平均负载和启动时间信息
  • m:切换显示内存信息;
  • t:切换显示进程和CPU状态信息
  • c:切换显示命令名称和完整命令行
  • M:根据驻留内存大小进行排序
  • P:根据CPU使用百分比大小进行排序
  • T:根据时间/累计时间进行排序
  • w:将当前设置写入~/.toprc文件中

2.3 实例:

top - 16:11:50 up 142 days,  3:42,  1 user,  load average: 0.18, 0.11, 0.11
Tasks:  81 total,   1 running,  80 sleeping,   0 stopped,   0 zombie
%Cpu(s):  6.5 us,  0.3 sy,  0.0 ni, 93.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881936 total,  1047588 free,  2311472 used,   522876 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1191308 avail Mem

1.系统运行时间和平均负载 top - 16:08:09 up 19 days, 4:29, 1 users, load average: 0.00, 0.00, 0.00

  • top - 16:11:50[当前系统时间]
  • 142 days[系统已经运行了142天]
  • 1 user[1个用户当前登录]
  • load average: 0.18, 0.11, 0.11[系统负载,即任务队列的平均长度, 分别为1分钟,5分钟,15分钟前到现在的平均值]

2.任务 Tasks: 81 total, 1 running, 80 sleeping, 0 stopped, 0 zombie

  • 81 total[总进程数],
  • 1 running[正在运行的进程数]
  • 80 sleeping[睡眠的进程数]
  • 0 stopped[停止的进程数]
  • 0 zombie[冻结进程数]

3.CPU 状态 %Cpu(s): 6.5 us, 0.3 sy, 0.0 ni, 93.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

  • 6.5 us[用户空间占用CPU百分比. 使用时按下键盘1可以显示各颗逻辑CPU的使用情况]
  • 0.3 sy[内核空间占用CPU百分比]
  • 0.0 ni[用户进程空间内改变过优先级的进程占用CPU百分比]
  • 93.2 id[空闲CPU百分比. 一般来说监控分析时获取系统CPU使用情况应该是用1-%id的数据]
  • 0.0 wa[等待输入输出的CPU时间百分比. 使用率过高时,需要考虑IO的性能是否有瓶颈,再用iostat,sar等命令进一步分析]
  • 0.0 hi[处理硬件中断的CPU时间. 一般硬件中断可以分析文件/proc/interrupts,/proc/irq/pid/smp_affinity,服务irqbalances是否配置,以及CPU的频率设置]
  • 0.0 si[处理软件中断的CPU时间. 软中断:通过一种软件的方法(可延迟函数)来模拟硬件的中断,常见的软件中断一般都是和网络相关.]
  • 0.0 st[这个虚拟机被hypervisor偷去的CPU时间]

4.内存使用

KiB Mem :  3881936 total,  1047588 free,  2311472 used,   522876 buff/cache
KiB Swap:        0 total,        0 free,        0 used.  1191308 avail Mem

Mem

  • 3881936 total[物理内存总量]
  • 2311472 used[使用的物理内存总量]
  • 1047588 free[空闲内存总量]
  • 522876 buff/cache[用作内核缓存的内存量]

Swap

  • 0 total[交换区总量]
  • 0 used[使用的交换区总量]
  • 0 free[空闲交换区总量]
  • 1191308 avail Mem[缓冲的交换区总量]

2.4 各进程的状态监控

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
3941 tomcat    20   0 2876156 486080   4672 S  15.7 12.5   3007:01 java
1090 root      20   0  130300   9256   4564 S   0.7  0.2  51:40.31 AliYunDun
4672 root      20   0  122048    616      0 S   0.3  0.0  10:08.16 wrapper
  • PID:进程ID,进程的唯一标识符
  • USER:进程所有者的实际用户名
  • PR:进程的调度优先级.这个字段的一些值是'rt',这意味这这些进程运行在实时态
  • NI:进程的nice值(优先级).越小的值意味着越高的优先级.负值表示高优先级,正值表示低优先级
  • VIRT:进程使用的虚拟内存.进程使用的虚拟内存总量,单位kb.VIRT=SWAP+RES
  • RES:驻留内存大小.驻留内存是任务使用的非交换物理内存大小.进程使用的、未被换出的物理内存大小,单位kb.RES=CODE+DATA
  • SHR:SHR是进程使用的共享内存.共享内存大小,单位kb
  • S:这个是进程的状态
    • D - 不可中断的睡眠态. Uninterruptible sleep,通常出现在IO阻塞
    • R – 运行态. Running or runnable
    • S – 睡眠态. Interruptible sleep
    • T – 被跟踪或已停止. Stopped
    • Z – 僵尸态. process
  • %CPU:自从上一次更新时到现在任务所使用的CPU时间百分比
  • %MEM:进程使用的可用物理内存百分比
  • TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒
  • COMMAND:运行进程所使用的命令.进程名称(命令名/命令行)

进程状态切换示意图

results matching ""

    No results matching ""