龙空技术网

shell指令监控Linux系统状态

码农hk 1094

前言:

当前姐妹们对“phpnginx实时输出”都比较注重,小伙伴们都需要剖析一些“phpnginx实时输出”的相关内容。那么小编同时在网上汇集了一些有关“phpnginx实时输出””的相关知识,希望同学们能喜欢,姐妹们一起来了解一下吧!

众所周知,生病了需要去医院看病,大夫首先要询问我们哪里不舒服,然后再通过观察和自己的经验,大体上就能判定我们得的是什么病。然而Linux不会说话,它不会主动告诉我们哪里出现了问题,需要我们自己去观察。那么如何评估系统运行状态是否良好呢?下面介绍一些帮我们分析系统状态的工具。

1. 使用w命令查看当前系统的负载

具体用法如下:

[root@localhost ~]# w 17:47:24 up 6 days,  7:09,  1 user,  load average: 0.00, 0.00, 0.00USER     TTY        LOGIN@   IDLE   CPU   PCPU WHATroot     pts/0     11:16    1.00s  0.09s  0.00s w

相信所有Linux管理员最常用的命令就是这个w了,该命令显示的信息很丰富。第1行从左至右显示的信息依次为:时间、系统运行时间、 登录用户数、平均负载。从第2行开始的所有行则是告诉我们:当前登录的用户名及其登录地址等。其实在这些信息中,最应该关注第1行中的 load average:后面的3个数值。

第1个数值表示1分钟内系统的平均负载值,第2个数值表示5分钟内系统的平均负载值,第3个数值表示15分钟内系统的平均负载值。我们着重看第1个值,它表示单位时间段内使用CPU的活动进程数(在这里其实就是1分钟内),值越大就说明服务器压力越大。一般情况下,这个值只要不超过服务器的CPU数量就没有关系。如果服务器的CPU数量为8,那么值小于8就说明当前服务器没有压力;否则就要关注一下了。查看服务器有几个CPU的方法如下所示:

[root@localhost ~]# cat /proc/cpuinfoprocessor       : 0vendor_id       : GenuineIntelcpu family      : 6model           : 85model name      : Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHzstepping        : 4microcode       : 0x1cpu MHz         : 2399.998cache size      : 16384 KBphysical id     : 0siblings        : 8core id         : 0cpu cores       : 8apicid          : 0initial apicid  : 0fpu             : yesfpu_exception   : yescpuid level     : 13wp              : yesflags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat md_clear flush_l1dbugs            : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs taa itlb_multihit mmio_stale_data retbleedbogomips        : 4799.99clflush size    : 64cache_alignment : 64address sizes   : 46 bits physical, 48 bits virtualpower management:processor       : 1vendor_id       : GenuineIntelcpu family      : 6

上例中,/proc/cpuinfo这个文件记录了CPU的详细信息。目前市面上的服务器有很多是2颗多核CPU,在Linux看来,它就是2*n个CPU(这里的n为单颗物理CPU上有几核)。假如n是4,则查看这个文件时会显示8段类似的信息,而最后一段信息的processor : 后面会显示7。所以查看当前系统有几个CPU,我们可以使用命令grep -c 'processor' /proc/cpuinfo。然而查看有几颗物理CPU时,则需要查看关键字physical id。

另外一个查看CPU信息的命令为lscpu,如下所示:

[root@localhost ~]# lscpuArchitecture:            x86_64  CPU op-mode(s):        32-bit, 64-bit  Address sizes:         46 bits physical, 48 bits virtual  Byte Order:            Little EndianCPU(s):                  16  On-line CPU(s) list:   0-15Vendor ID:               GenuineIntel  BIOS Vendor ID:        QEMU  Model name:            Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz    BIOS Model name:     pc-i440fx-2.8    CPU family:          6    Model:               85    Thread(s) per core:  1    Core(s) per socket:  8    Socket(s):           2    Stepping:            4    BogoMIPS:            4799.99    Flags:               fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdts                         cp lm constant_tsc arch_perfmon rep_good nopl xtopology cpuid tsc_known_freq pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2                         apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibr                         s ibpb stibp fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt clwb                         avx512cd avx512bw avx512vl xsaveopt xsavec xgetbv1 arat md_clear flush_l1dVirtualization features:  Hypervisor vendor:     KVM  Virtualization type:   fullCaches (sum of all):  L1d:                   512 KiB (16 instances)  L1i:                   512 KiB (16 instances)  L2:                    64 MiB (16 instances)  L3:                    32 MiB (2 instances)NUMA:  NUMA node(s):          1  NUMA node0 CPU(s):     0-15Vulnerabilities:  Itlb multihit:         KVM: Mitigation: VMX unsupported  L1tf:                  Mitigation; PTE Inversion  Mds:                   Mitigation; Clear CPU buffers; SMT Host state unknown  Meltdown:              Mitigation; PTI  Mmio stale data:       Mitigation; Clear CPU buffers; SMT Host state unknown  Retbleed:              Mitigation; IBRS  Spec store bypass:     Mitigation; Speculative Store Bypass disabled via prctl  Spectre v1:            Mitigation; usercopy/swapgs barriers and __user pointer sanitization  Spectre v2:            Mitigation; IBRS, IBPB conditional, RSB filling, PBRSB-eIBRS Not affected  Srbds:                 Not affected  Tsx async abort:       Mitigation; Clear CPU buffers; SMT Host state unknown
2. 用vmstat命令监控系统的状态

具体用法如下:

[root@localhost ~]# vmstatprocs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st 0  0      0 28202228   2780 1145492    0    0     0     0    1    1  0  0 100  0  0

命令w查看的是系统整体上的负载,通过看那个数值可以知道当前系统有没有压力。但它无法判断具体是哪里(CPU、内存、磁盘等)有压力,所以这就用到了vmstat。vmstat命令打印的结果共分为6部分:procs、memory、swap、io、system和cpu。请重点关注一下r、b、si、so、bi、bo这几列信息。

procs显示进程的相关信息。

r(run):表示运行或等待CPU时间片的进程数。大家不要误认为等待CPU时间片意味着这个进程没有运行,实际上某一时刻1个CPU只能有一个进程占用,其他进程只能排着队等着,此时这些排队等待CPU资源的进程依然是运行状态。该数值如果长期大于服务器CPU的个数,则说明CPU资源不够用了。

b(block):表示等待资源的进程数,这个资源指的是I/O、内存等。举个例子,当磁盘读写非常频繁时,写数据就会非常慢,此时CPU运算很快就结束了,但进程需要把计算的结果写入磁盘,这样进程的任务才算完成,那此时这个进程只能慢慢地等待磁盘了,这样这个进程就是这个b状态。该数值如果长时间大于1,则需要关注一下了。

memory显示内存的相关信息。

swpd:表示切换到交换分区中的内存数量,单位为KB。

free:表示当前空闲的内存数量,单位为KB。

buff:表示(即将写入磁盘的)缓冲大小,单位为KB。

cache:表示(从磁盘中读取的)缓存大小,单位为KB。

swap显示内存的交换情况。

bsi:表示由交换区写入内存的数据量,单位为KB。

so:表示由内存写入交换区的数据量,单位为KB。

io显示磁盘的使用情况。

bi:表示从块设备读取数据的量(读磁盘),单位为KB。

bo:表示从块设备写入数据的量(写磁盘),单位为KB。

system显示采集间隔内发生的中断次数。

in:表示在某一时间间隔内观测到的每秒设备的中断次数。

cs:表示每秒产生的上下文切换次数。

cpu显示CPU的使用状态。

us:显示用户下所花费CPU的时间百分比。

sy:显示系统花费CPU的时间百分比。

id:表示CPU处于空闲状态的时间百分比。

wa:表示I/O等待所占用CPU的时间百分比。

st:表示被偷走的CPU所占百分比(一般都为0,不用关注)。

以上所介绍的各个参数中,经常会关注r、b和wa这3列。io部分的bi和bo也是要经常参考的对象,如果磁盘io压力很大,这两列的数值会比较高。另外,当si和so两列的数值比较高并且不断变化时,说明内存不够了,内存中的数据频繁交换到交换分区中,这往往对系统性能影响极大。

[root@localhost ~]# vmstat 1 5[root@localhost ~]# vmstat 1

前一条命令表示每隔1秒输出一次状态,共输出5次;后一条命令表示每隔1秒输出一次状态且一直输出,除非按Ctrl+C键结束。

3. 用top命令显示进程所占的系统资源

具体用法如下:

# toptop - 10:50:36 up 27 days, 12 min,  1 user,  load average: 0.00, 0.00, 0.00Tasks: 263 total,   1 running, 262 sleeping,   0 stopped,   0 zombie%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 stMiB Mem :  31774.7 total,  27543.4 free,   3571.2 used,   1121.4 buff/cacheMiB Swap:   8192.0 total,   8192.0 free,      0.0 used.  28203.6 avail Mem    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND  44981 root      20   0       0      0      0 I   0.3   0.0   0:00.12 kworker/12:0-events_power_efficient      1 root      20   0  173128  17400  10496 S   0.0   0.1   0:28.62 systemd      2 root      20   0       0      0      0 S   0.0   0.0   0:01.34 kthreadd      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri      9 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq     11 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_kthre     12 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_rude_     13 root      20   0       0      0      0 I   0.0   0.0   0:00.00 rcu_tasks_trace     14 root      20   0       0      0      0 S   0.0   0.0   0:00.01 ksoftirqd/0     15 root      20   0       0      0      0 I   0.0   0.0   0:36.25 rcu_preempt     16 root      rt   0       0      0      0 S   0.0   0.0   0:02.23 migration/0     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0     19 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1     20 root      rt   0       0      0      0 S   0.0   0.0   0:01.75 migration/1     21 root      20   0       0      0      0 S   0.0   0.0   0:00.03 ksoftirqd/1     23 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/1:0H-events_highpri     24 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/2     25 root      rt   0       0      0      0 S   0.0   0.0   0:02.27 migration/2     26 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftirqd/2     28 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/2:0H-events_highpri     29 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/3     30 root      rt   0       0      0      0 S   0.0   0.0   0:02.09 migration/3     31 root      20   0       0      0      0 S   0.0   0.0   0:00.05 ksoftirqd/3     33 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/3:0H-events_highpri     34 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/4     35 root      rt   0       0      0      0 S   0.0   0.0   0:01.71 migration/4     36 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftirqd/4     38 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/4:0H-events_highpri     39 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/5     40 root      rt   0       0      0      0 S   0.0   0.0   0:01.72 migration/5     41 root      20   0       0      0      0 S   0.0   0.0   0:00.02 ksoftirqd/5     43 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/5:0H-kblockd     44 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/6     45 root      rt   0       0      0      0 S   0.0   0.0   0:02.38 migration/6     46 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/6     48 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/6:0H-events_highpri     49 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/7     50 root      rt   0       0      0      0 S   0.0   0.0   0:00.95 migration/7     51 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/7     53 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/7:0H-events_highpri     54 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/8     55 root      rt   0       0      0      0 S   0.0   0.0   0:01.91 migration/8     56 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/8     58 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/8:0H-events_highpri     59 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/9     60 root      rt   0       0      0      0 S   0.0   0.0   0:01.95 migration/9     61 root      20   0       0      0      0 S   0.0   0.0   0:00.01 ksoftirqd/9     63 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/9:0H-events_highpri     64 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/10     65 root      rt   0       0      0      0 S   0.0   0.0   0:01.94 migration/10     66 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/10     68 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/10:0H-events_highpri     69 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/11     70 root      rt   0       0      0      0 S   0.0   0.0   0:01.80 migration/11     71 root      20   0       0      0      0 S   0.0   0.0   0:00.00 ksoftirqd/11

top命令用于动态监控进程所占的系统资源,每隔3秒变一次。它的特点是把占用系统资源(CPU、内存、磁盘I/O等)最高的进程放到最前面。上例中,top命令打印出了很多信息,包括系统负载(load average)、进程数(Tasks)、CPU使用情况、内存使用情况以及交换分区使用情况。这些内容其实可以通过其他命令来查看,用top重点查看的还是下面的进程使用系统资源的详细状况,其中你需要关注%CPU、%MEM和COMMAND这几项所代表的意义。RES这一项为进程所占的内存大小,而%MEM这一项为使用内存的百分比。在top状态下,按Shift+m键可以按照内存使用大小排序。按数字1可以列出所有核CPU的使用状态,按q键可以退出top。

另外,经常用到命令top -bn1,它表示非动态打印系统资源的使用情况,可以用在shell脚本中。示例如下:

和top命令唯一的区别就是,它一次性输出所有信息而非动态显示。

4. 用sar命令监控系统状态

sar命令很强大,它可以监控系统几乎所有资源的状态,比如平均负载、网卡流量、磁盘状态、内存使用等。与其他系统状态监控工具不同,它可以打印历史信息,可以显示当天从零点开始到当前时刻的系统状态信息。如果你的系统没有安装这个命令,请使用命令yum install -y sysstat安装。初次使用sar命令会报错,那是因为sar工具还没有生成相应的数据库文件(无需实时监控,因为不用去查询那个库文件)。它的数据库文件在/var/log/sa/目录下。因为这个命令太复杂,所以只介绍以下两个方面。

1. 查看网卡流量 sar -n DEV

具体用法如下:

[root@localhost ~]# sar -n DEV 1 5Linux 5.14.0-160.el9.x86_64 (localhost.localdomain)     01/11/2023      _x86_64_        (16 CPU)11:40:03 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil11:40:04 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0011:40:04 AM    enp4s1      3.00      1.00      0.47      0.10      0.00      0.00      0.00      0.0011:40:04 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil11:40:05 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0011:40:05 AM    enp4s1      1.00      2.00      0.06      0.29      0.00      0.00      0.00      0.0011:40:05 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil11:40:06 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0011:40:06 AM    enp4s1      1.00      2.00      0.06      0.29      0.00      0.00      0.00      0.0011:40:06 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil11:40:07 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0011:40:07 AM    enp4s1      2.00      2.00      0.12      0.29      0.00      0.00      0.00      0.0011:40:07 AM     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil11:40:08 AM        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.0011:40:08 AM    enp4s1      1.00      3.00      0.06      0.35      0.00      0.00      0.00      0.00Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutilAverage:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00Average:       enp4s1      1.60      2.00      0.15      0.26      0.00      0.00      0.00      0.00

你的结果可能和上面的不一样,这是因为网卡名字不一样,总之这个命令会把网卡信息打印出来,这里的1 5和vmstat用法一样,表示每隔1秒打印一次,共打印5次。IFACE这一列表示设备名称,rxpck/s这一列表示每秒进入收取的包的数量,txpck/s这一列表示每秒发送出去的包的数量,rxkB/s这一列表示每秒收取的数据量(单位为KB),txkB/s这一列表示每秒发送的数据量(后面几列不需要关注)。

如果有一天服务器丢包非常严重,那么你就应该查一下网卡流量是否异常了。如果rxpck/s那一列的数值大于4000,或者rxkB/s那一列的数值大于5000000,很有可能是被攻击了。正常的服务器网卡流量不会这么高,除非是你自己在复制数据。

另外也可以使用-f选项查看某一天的网卡流量历史,后面跟文件名。在Red Hat或者CentOS发行版中,sar的库文件一定在/var/log/sa/目录下,如果你刚安装syssta包,该目录下还未生成任何文件,其用法如下所示:

# sar -n DEV -f /var/log/sa/sa03

2. 查看历史负载 sar -q

[root@localhost ~]# sar -q

如果报如上错误,可以重启syssta服务,命令为systemctl restart sysstat。即使生成该文件,但依然还不能正常显示结果,因为它需要每隔10分钟才会记录一次数据。这个命令有助于我们查看服务器在过去某个时间的负载状况。其实介绍sar命令,只是为了让你学会查看网卡流量(这是非常有用的)。如果你感兴趣可以man一下,它的用法还有很多。

5. 用nload命令查看网卡流量

sar虽然可以查看网卡流量,但是不够直观,还有一个更好用的工具,那就是nload。系统没有默认安装它,安装方法如下:

# yum install –y epel-release; yum install –y nload

安装过程不再贴出来。关于上面的命令,也许你有疑问,为什么不直接写两个包呢?这是因为要想安装nload,前提是先安装epel-release包,nload包是在epel这个扩展源里面的。以后在工作中,你一定会经常使用epel扩展源安装一些软件包,非常方便。安装完之后,直接运行nload命令,然后回车就会出现如下界面。是动态的哦,很直观对不对?相信你会喜欢上这个工具。

最上面一行为网卡名字以及IP地址,按向右箭头可以查看其他网卡的网络流量。输出结果分为两部分,Incoming为进入网卡的流量,Outgoing为网卡出去的流量,我们关注的当然是Curr那行的数据,其单位也可以动态自动调整,非常人性化。按q退出该界面。

6. 用free命令查看内存使用状况

具体用法如下:

[root@localhost ~]# free               total        used        free      shared  buff/cache   availableMem:        32537324     3703956    28099376       39528     1217372    28833368Swap:        8388604           0     8388604

free命令可以查看当前系统的总内存大小以及使用内存的情况。

total:内存总大小。used:真正使用的实际内存大小。free:剩余物理内存大小(没有被分配,纯剩余)。shared:共享内存大小,不用关注它。buff/cache:分配给buffer和cache的内存总共有多大。关于buffer和cache大家也许有一些疑惑,因为字面意思上两者很相近。教你一个很容易区分这两者的方法,buffer和cache都是一部分内存,内存的作用就是缓解CPU和IO(如,磁盘)的速度差距的,你可以这样理解:数据经过CPU计算,即将要写入磁盘,这时用的内存为buffer;CPU要计算时,需要把数据从磁盘中读出来,临时先放到内存中,这部分内存就是cache。available:系统可使用内存有多大,它包含了free。Linux系统为了让应用跑得更快,会预先分配一部分内存(buffer/cache)给某些应用使用,虽然这部分内存并没有真正使用,但也已经分配出去了。然而,当另外一个服务要使用更多内存时,是可以把这部分预先分配的内存拿来用的。所以还没有被占用的这部分buffer和cache再加上free就是available。这个free命令显示的结果中,其实有一个隐藏的公式:total=used+free+buff/cache。另外,available是由free这部分内存和buff/cache还未被占用的那部分内存组成。used那部分内存和buff/cache被占用的内存是没有关系的。free命令还可以加-m和-g选项(分别以MB或GB为单位)打印内存的使用状况,甚至也支持-h选项。示例命令如下:[root@localhost ~]# free -m

7. 用ps命令查看系统进程

系统管理员一定要知道你所管理的系统都有哪些进程在运行,在Windows下只要打开任务管理器即可查看。那么在Linux下如何查看呢?

其实使用前面介绍的top命令就可以,但是查看起来没有ps命令方便,它是专门显示系统进程的命令,如下所示:[root@localhost ~]# ps aux

也经常看到有人喜欢用命令ps -elf,但它们显示的信息基本上是一样的。

ps命令还有更多的用法,你只要会用这个命令就足够了。

下面介绍几个系统进程的参数。

PID:表示进程的ID,这个ID很有用。在Linux中,内核管理进程就得靠pid来识别和管理某一个进程。比如我想终止某一个进程,则用命令“kill 进程的pid”。有时这样并不能终止进程,需要加-9选项,即“kill -9 进程的pid”,但这样有点暴力,严重的时候会丢数据,所以尽量还是别用。

STAT:进程的状态。进程状态分为以下几种(不要求记住,但要了解)。

D:不能中断的进程(通常为IO)。

R(run):正在运行中的进程,其中包括了等待CPU时间片的进程。

S(sleep):已经中断的进程。通常情况下,系统的大部分进程都是这个状态。

T:已经停止或者暂停的进程。如果我们正在运行一个命令,比如说sleep 10,我们按一下Ctrl+Z暂停进程时,用ps命令查看就会显示T这个状态。

W:(内核2.6xx以后不可用),没有足够的内存页分配。

X:已经死掉的进程(这个好像从来不会出现)。

Z:僵尸进程,即杀不掉、打不死的垃圾进程,占用系统一点资源,不过没有关系。如果占用太多(一般不会出现),就需要重视了。<:高优先级进程。

N:低优先级进程。

L:在内存中被锁了内存分页。

s:主进程,后面讲到nginx或者php-fpm服务的时候,你就能更好地理解它了。

l:多线程进程。+:在前台运行的进程,比如在当前终端执行ps aux就是前台进程。

8. 用netstat命令查看网络状况

具体用法如下:[root@localhost ~]# netstat -lnp

若没有此命令,请使用yum install net-tools安装。

显示的结果中,上面那一部分是tcp/ip,下面一部分是监听的socket(unix开头的行)。netstat命令用来打印网络连接状况、系统所开放端口、路由表等信息。

最常用的两种用法是netstat -lnp(打印当前系统启动哪些端口)和netstat -an(打印网络连接状况),它们非常有用,请一定要记住。

示例如下:[root@localhost ~]# netstat -an | head -n 20

最右侧为网络连接的状态,如果你对TCP三次握手比较熟悉,那应该对最后这一列的字符串不陌生。

如果你管理是一台提供Web服务(80端口)的服务器,那么就可以使用命令netstat -an |grep 80来查看当前连接Web服务的有哪些IP了。

标签: #phpnginx实时输出