Linux常用命令(系统运行监测相关操作)

Linux常用命令(博客地图):https://blog.csdn.net/sysukehan/article/details/105804511

 

1、将某个时间点的进程运行情况选取下来:ps

参数:

-A:所有的进程均显示出来,与-e具有同样的作用。

-a:不与terminal有关的所有进程。

-u:有效用户(effective user)相关的进程。

x:通常与a这个参数一起使用,可列出较完整的信息。

 

输出格式规划:

l:较长、较详细地将该PID的信息列出。

j:工作的格式(jobs format)。

-f:做一个更为完整的输出。

 

man ps中给出了一些常用的示例,记住这些就够了。

 

仅查看自己的bash相关进程:ps -l

各列含义:

1、F:代表这个进程标志(process flags),说明这个进程的权限,常见的号码有:

1)4表示此进程的权限为root。

2)1表示此子进程仅可进行复制(fork)而无法实际执行(exec)。

2、S:代表这个进程的状态(STAT),主要的状态有:

R(Running):该进程正在运行中。

S(Sleep):该进程目前正在睡眠状态(idle),但可以被唤醒(signal)。

D:不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(比如打印)。

T:停止状态(stop),可能是在工作控制(后台暂停)或除错(traced)状态。

Z(Zombie):“僵尸”状态,进程已经终止但却无法被删除至内存外。

3、UID/PID/PPID:代表此进程被该UID所拥有/进程的PID号码/此进程的父进程PID号码。

4、C:代表CPU使用率,单位为百分比。

5、PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行。

6、ADDR/SZ/WCHAN:都与内存有关,ADDR是kernel function,指出该进程在内存的哪个部分,如果是个running的进程,一般就会显示“-”。SZ代表此进程用掉多少内存。WCHAN表示目前进程是否运行中,同样,若为“-”表示正在运行中。

7、TTY:登录者的终端机位置,若为远程登录则使用动态终端接口(pts/n)。

8、TIME:使用掉的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间。

9、CMD:就是command的缩写,造成此程序的触发进程的命令为何。

 

查看系统所有进程:ps aux

各列含义:

1、USER:该进程是属于哪个用户账号的。

2、PID:该进程的进程标识符。

3、%CPU:该进程使用掉的CPU资源百分比。

4、%MEM:该进程所占用的物理内存百分比。

5、VSZ:该进程使用掉的虚拟内存量(KB)。

6、RSS:该进程使用掉的固定内存量(KB)。

7、TTY:该进程是在哪个终端机上面运行的,若与终端机无关则显示?。另外,tty1~tty6是本机上面的登录者程序,若为pts/0等的,则表示为由网络连接进主机的进程。

8、STAT:该进程目前的状态,状态显示与ps -l的S标识相同(R/S/T/Z)。

9、START:该进程被触发启动的时间。

10、TIME:该进程实际使用CPU运行的时间。

11、COMMAND:该进程的实际命令。

如果某个进程的CMD后面还接上<defunct>时,就代表该进程是僵尸进程。

 

2、动态查看进程的变化:top

top [-d 数字] | top [-bnp]

参数:

-d:后面可以接秒数,就是整个进程界面更新的秒数,默认是5秒。

-b:以批次的方式执行top,还有更多的参数可以使用。通常会搭配数据流重定向来将批次处理的结果输出成文件。

-n:与-b搭配,意义是需要进行几次top的输出结果。

-p:指定某些个PID来进行查看监测。

在top执行过程当中可以使用的按键命令:

?:显示在top当中可以输入的按键命令。

P:以CPU的使用资源排序显示。

M:以内存的使用资源排序显示。

N:以PID来排序。

T:由该进程使用的CPU时间累积(TIME+)排序。

k:给予某一个PID一个信号(singal)。

r:给予某一个PID重新指定一个nice值。

q:离开top。

显示内容解释:

第一行:top - 18:09:15 up  2:04,  1 user,  load average: 0.17, 0.52, 1.09

目前的时间: 18:09:15

开机到目前为止所经过的时间: 2:04

已经登录系统的用户人数: 1 user

系统在1,5,15分钟的平均工作负载: 0.17, 0.52, 1.09,越小代表越闲置,大于1需要注意。

第二行:Tasks: 212 total,   1 running, 160 sleeping,   0 stopped,   0 zombie

显示的是目前进程的总量和个别进程的状态,需要关注zombie的数量

第三行:%Cpu(s):  4.6 us,  1.0 sy,  0.0 ni, 94.4 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

显示的是CPU的整体负载,需要特别注意的是%wa,代表的是I/Owait,通常系统会变慢都是I/O产生的问题,因此这里要注意这个选项耗用CPU的资源。如果是多内核的设备,可以按下数字键“1”来切换成 不同CPU的负载率。

第四行:KiB Mem :  3855448 total,   388592 free,  1290652 used,  2176204 buff/cache

第五行:KiB Swap:  3999740 total,  3999740 free,        0 used.  2029928 avail Mem

表示目前的物理内存与虚拟内存(Mem/Swap)的使用情况,swap的使用量要尽量少,如果swap被大量使用,表示系统的物理内存不足。

top的下半部分界面列介绍

PID:每个进程的ID。

USER:进程所属用户。

PR:priority的简写,进程的优先执行顺序,越小越早被执行。

NI:nice的简写,与priority有关,也是越小越早被执行。

%CPU:CPU的使用率。

%MEM:内存的使用率。

TIME+:CPU使用时间的累加。

top默认使用CPU使用率(%CPU)作为排序的重点,如果你想要使用内存使用率排序,可以按下“M”,若要恢复则按下“P”即可,离开top按“q”。

 

3、查看进程相关性(进程树):pstree

pstree [A|U] [-up]

参数:

-A:各进程树之间的连接以ASCII字符来连接。

-U:各进程树之间的连接以utf8码来连接,在某些终端接口下可能会有错误。

-P:同时列出每个进程的PID。

-u:同时列出每个进程的所属账号名称。

可以用于查找指定进程号的进程相关性:

 

4、传递signal给指定PID:kill -signal PID

代号

名称

内容

1

SIGHUP

启动被终止的进程,可让该PID重新读取自己的配置文件,类似重新启动。

2

SIGINT

相当于用键盘输入ctrl+c中断进程的进行

9

SIGKILL

代表强制中断一个进程的进行,如果该进程执行到一半,那么尚未完成的部分可能会有“半成品”产生,类似vi会有.filename.swp保留下来。

15

SIGTERM

以正常的结束进程来终止该进程。由于是正常的终止,所以后续的操作会将它完成。不过,如果该进程已经发生问题,就是无法使用正常的方法终止时,输入这个signal也是没有用的。

17

SIGSTOP

相当于用键盘输入ctrl+z来暂停一个进程的进行。

常用的就是kill -9 pid,用于终止异常进程。

 

5、查看内存的使用情况:free

free [-b|-k|-m|-g] [-t]

参数:

-b:直接输入free时,显示的单位是KB,可以使用b(byte)、m(MB)、k(KB)和g(GB)来显示单位。

-t:在输出的最终结果中显示物理内存与swap的总量。

free -m

Mem是物理内存的量,Swap是虚拟内存的量,total是总量,used是已被使用的量,free是剩余可使用的量。shared/buffers/cached是已被使用的量当中用来作为缓冲及快取的量。

Linux系统为了要加快系统性能,所以会将最长使用到的或者是最近使用到的文件数据缓存下来,这样将来系统要使用该文件时,就直接由内存中取出,而不需要重新读取硬盘,速度上就加快了。因此,物理内存被用光是正常的。需要注意的是swap的量,一般来说,swap最好不要被使用,尤其swap最好不要被使用超过20%以上,如果超过20%,说明物理内存不足。

 

6、查看系统与内核相关信息:uname

参数:

-a:所有系统相关信息,包括下面的数据都会被列出来。

-s:系统内核名称。

-r:内核的版本。

-m:本系统的硬件名称,例如i686或x86_64等。

-p:CPU的类型,与-m类似,只是显示的是CPU的类型。

-i:硬件的平台(ix86)。

uname -a

 

7、查看系统启动时间与工作负载:uptime

uptime显示的内容其实就是top的第一行:

 

8、查看端口监听:netstat

参数:

-a:将目前系统上所有的连接、监听、Socket数据都列出来。

-t:列出tcp网络数据包的数据。

-u:列出udp网络数据包的数据。

-n:不列出进程的服务名称,以端口号(port number)来显示。

-l:列出目前正在网络监听(listen)的服务。

-p:列出该网络服务的进程PID。

列介绍:

1、Proto:网络的数据包协议,主要分为TCP和UDP数据包。

2、Recv-Q:非由用户进程连接到此socket的复制的总字节数。

3、Send-Q:非由远程主机传送过来的acknowledged总字节数。

4、LocalAddress:本地的IP端口情况。

5、ForeignAddress:远程主机的IP端口情况。

6、State:连接状态,主要由建立(ESTABLISED)及监听(LISTEN)。

7、PID/Program name:进程号/进程名

 

从LocalAddress结合State可以判断出当前服务器上哪个端口有没有被监听。

 

9、分析内核产生的信息:dmesg

系统在开机的时候,内核会去检测系统的硬件,硬件到底有没有被识别出来,就与这个时候的检测相关。但是这些检测的过程要不是没有显示在屏幕上,就是很飞快地在屏幕上一闪而逝,用dmesg就可以把内核检测的信息打印出来。所有内核检测的信息,不管是开机的时候还是系统运行过程中,只要是内核产生的信息都会被记录到内存中的某个保护区段。dmesg这个命令就能够将该区段的信息读出来。

使用方法:

1、使用|more的方式使界面暂停,dmesg | more

按回车键可以往下继续查看,按q退出。

 

2、用grep筛选出指定硬件相关信息,如查看硬盘相关信息:dmesg | grep -i hd

 

10、检测系统资源的变化:vmstat

参数:

-a:使用inactive/active(活跃与否)替代buffer/cache的内存输出信息。

-f:开机到目前为止系统复制(fork)的进程数。

-s:将一些事件(开机至目前为止)导致的内存变化情况列表说明。

-S:后面可以接单位,让显示的数据有单位。

-d:列出磁盘的读写总量统计表。

-p:后面列出分区,可现实该分区的读写总量统计表。

统计目前主机CPU状态,每秒1次,共计3次:vmstat 1 3

各字段的含义:

进程字段(procs)的选项分别为:

r:等待运行中的进程数量,b:不可被唤醒的进程数量。这两个选项越多,代表系统越忙碌(因为系统太忙,所以很多进程就无法被执行或一直在等待而无法被唤醒)。

内存字段(memory)的选项分别为:

swpd:虚拟内存被使用的容量,free:未被使用的内存容量,buff:用于缓冲存储器,cache:用于高速缓存。这部分与free命令的输出是相同的。

内存交换空间(swap)的选项分别为:

si:由磁盘中将程序取出的量,so:由于内存不足而将没用到的程序写入到磁盘的swap的容量。如果si/so的数值太大,表示内存内的数据经常得在磁盘与内存之间传来传去,系统性能会很差。

磁盘读写(io)的选项分别为:

bi:由磁盘写入的块数量,bo:写入到磁盘去的块数量。如果这部分的值很高,代表系统的I/O非常忙碌。

系统(system)的选项分别为:

in:每秒被中断的进程次数,cs:每秒钟进行的时间切换次数。这两个数值越大,代表系统与接口设备的通信非常频繁。这些接口设备包括磁盘、网卡、时钟等。

CPU的选项分别为:

us:非内核层的CPU使用的百分比,sy:内核层所使用的CPU的百分比,id:闲置的CPU百分比,wa:等待I/O所耗费的CPU百分比,st:被虚拟机所盗用的CPU的使用百分比。

如果要一直检测系统状态,可以不指定总次数,如:vmstat 1,表示1秒检测一次,按ctrl+c停止。

 

11、查看硬盘存取数据信息:iostat

如果Linux没有安装这个工具的话可以使用apt install sysstat进行安装。


Iostat [-c|-d] [-k|-m] [-t] [间隔秒数] [检测次数]

参数:

-c:仅显示CPU的状态;

-d:仅显示存储设备的状态,不可与-c一起用;

-k:默认显示的是block,这里可以改成KB的大小来显示;

-m:与-k类似,只是以MB的单位来显示结果;

-t:显示日期;


关注sda那一行:

tps:平均每秒钟的传送次数,与数据传输的“次数”有关,非容量;

kB_read/s:开机到现在平均的读取单位;

kB_wrtn/s:开机到现在平均的写入单位;

kB_read:开机到现在总共读出来的文件单位;

kB_wrtn:开机到现在总共写入的文件单位;

 

每两秒钟检测一次存储设备,共检测三次:

 

12、显示日期:date

 

参考资料

《鸟哥的Linux私房菜基础学习篇(第三版)》

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值