常用命令
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以及需要设置的进程优先级值.输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权,默认值是10S:切换到累计模式s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms.输入0值则系统将不断刷新,默认值是5sf或者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+RESRES:驻留内存大小.驻留内存是任务使用的非交换物理内存大小.进程使用的、未被换出的物理内存大小,单位kb.RES=CODE+DATASHR:SHR是进程使用的共享内存.共享内存大小,单位kbS:这个是进程的状态- D - 不可中断的睡眠态. Uninterruptible sleep,通常出现在IO阻塞
- R – 运行态. Running or runnable
- S – 睡眠态. Interruptible sleep
- T – 被跟踪或已停止. Stopped
- Z – 僵尸态. process
%CPU:自从上一次更新时到现在任务所使用的CPU时间百分比%MEM:进程使用的可用物理内存百分比TIME+:任务启动后到现在所使用的全部CPU时间,精确到百分之一秒COMMAND:运行进程所使用的命令.进程名称(命令名/命令行)
