第十章 Linux日常运维管理
10.1 查看系统负载
w命令
w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。
1[root@cham2 ~]# w 2 14:28:15 up 9:31, 1 user, load average: 0.02, 0.04, 0.05 3USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 4root pts/0 192.168.230.1 14:25 7.00s 0.42s 0.33s w 5[root@cham2 ~]# date 62017年 11月 27日 星期一 14:29:57 CST
说明:第一行从左边开始显示的信息依次是:时间,系统运行时间,登录用户数,平均负载(1min平均负载、5min平均负载、15min平均负载)。
load average:平均负载,即单位时间内CPU活动进程数,这个值越大说明服务器压力越大,一般该值不超过cpu数量就可以。
查看服务器CPU数量(cat /proc/cpuinfo)
1[root@cham2 ~]# cat /proc/cpuinfo 2processor : 0 3vendor_id : GenuineIntel 4cpu family : 6 5model : 158 6model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 7stepping : 9 8microcode : 0x42 9cpu MHz : 2807.818 10cache size : 6144 KB 11physical id : 0 12siblings : 2 13core id : 0 14cpu cores : 2 15apicid : 0 16initial apicid : 0 17fpu : yes 18fpu_exception : yes 19cpuid level : 22 20wp : yes 21flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp fsgsbase smep 22bogomips : 5615.99 23clflush size : 64 24cache_alignment : 64 25address sizes : 40 bits physical, 48 bits virtual 26power management: 27 28processor : 1 29vendor_id : GenuineIntel 30cpu family : 6 31model : 158 32model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz 33stepping : 9 34microcode : 0x42 35cpu MHz : 2807.818 36cache size : 6144 KB 37physical id : 0 38siblings : 2 39core id : 1 40cpu cores : 2 41apicid : 1 42initial apicid : 1 43fpu : yes 44fpu_exception : yes 45cpuid level : 22 46wp : yes 47flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts nopl xtopology tsc_reliable nonstop_tsc aperfmperf pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm 3dnowprefetch ida arat epb pln pts dtherm hwp hwp_noitfy hwp_act_window hwp_epp fsgsbase smep 48bogomips : 5615.99 49clflush size : 64 50cache_alignment : 64 51address sizes : 40 bits physical, 48 bits virtual 52power management:
说明: 在此,professor即为系统CPU数量。
uptime命令
>uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。
1[root@cham2 ~]# uptime 2 14:40:13 up 9:43, 1 user, load average: 0.00, 0.01, 0.05 3[root@cham2 ~]# w 4 14:40:22 up 9:43, 1 user, load average: 0.00, 0.01, 0.05 5USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT 6root pts/0 192.168.230.1 14:25 6.00s 0.15s 0.02s w
注: uptime得到的信息和w第一行结果是一样的。所以用w命令就可以了
(tty解析
>TTY设备包括虚拟控制台,串口以及伪终端设备。
在Linux系统的设备特殊文件目录/dev/下,终端特殊设备文件一般有以下几种:
-
串行端口
串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。计算机把每个串行端口都看作是一个字符设备。这些串行端口所对应的设备名称是: /dev/tts/0(或/dev/ttyS0),/dev/tts/1(或/dev/ttyS1)等,设备号分别是(4,0),(4,1)等,分别对应于DOS系统下的COM1、COM2等。 -
伪终端
伪终端(Pseudo Terminal)是成对的逻辑终端设备(即master和slave设备,对master的操作会反映到slave上)。 -
控制终端
如果当前进程有控制终端(Controlling Terminal)的话,那么/dev/tty就是当前进程的控制终端的设备特殊文件。可以使用命令”ps –ax”来查看进程与哪个控制终端相连。对于你登录的shell,/dev/tty就是你使用的终端,设备号是(5,0)。使用命令”tty”可以查看它具体对应哪个实际终端设备。/dev/tty有些类似于到实际所使用终端设备的一个联接。 -
控制台
在Linux 系统中,计算机显示器通常被称为控制台终端(Console)。它仿真了类型为Linux的一种终端(TERM=Linux),并且有一些设备特殊文件与之相关联:tty0、tty1、tty2 等。当你在控制台上登录时,使用的是tty1。使用Alt+[F1—F6]组合键时,我们就可以切换到tty2、tty3等上面去。tty1–tty6等称为虚拟终端,而tty0则是当前所使用虚拟终端的一个别名,系统所产生的信息会发送到该终端上(这时也叫控制台终端)。因此不管当前正在使用哪个虚拟终端,系统信息都会发送到控制台终端上。/dev/console即控制台,是与操作系统交互的设备,系统将一些信息直接输出到控制台上。只有在单用户模式下,才允许用户登录控制台。 -
虚拟终端
在Xwindow模式下的伪终端.如在Kubuntu下用konsole,就是用的虚拟终端,用tty命令可看到/dev/pts/name, name为当前用户名。)
10.2 vmstat命令
>vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),它可以报告关于进程、内存、I/O等系统整体运行状态。
vmstat用法
语法:
vmstat
意思是静态显示内存状态一次。vmstat 1 5
1[root@cham2 ~]# vmstat 2procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 3 r b swpd free buff cache si so bi bo in cs us sy id wa st 4 2 0 0 740108 876 149756 0 0 2 0 15 22 0 0 100 0 0
vmstat [n] 在此n代表数字
意思是以n秒每次的频率动态显示内存状态(按Ctrl+c结束命令)。
vmstat [n] [m]
意思是每n秒显示一次,显示m次后命令结束!
1[root@adai003 ~]# vmstat 1 3 2 3[root@cham2 ~]# vmstat 1 4procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 5 r b swpd free buff cache si so bi bo in cs us sy id wa st 6 1 0 0 739900 876 149788 0 0 2 0 15 22 0 0 100 0 0 7 0 0 0 739900 876 149788 0 0 0 0 92 62 0 0 100 0 0 8 0 0 0 739900 876 149788 0 0 0 0 24 35 0 0 100 0 0 9 0 0 0 739900 876 149788 0 0 0 0 70 56 0 0 100 0 0 10 0 0 0 739900 876 149788 0 0 0 0 27 43 0 0 100 0 0 11 0 0 0 739900 876 149788 0 0 0 0 39 53 0 0 100 0 0 12 0 0 0 739900 876 149788 0 0 0 0 41 43 0 0 100 0 0 13 0 0 0 739900 876 149788 0 0 0 0 77 61 0 1 100 0 0 14 0 0 0 739900 876 149788 0 0 0 0 25 39 0 0 100 0 0 15^C 16[root@cham2 ~]# vmstat 1 5 17procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- 18 r b swpd free buff cache si so bi bo in cs us sy id wa st 19 1 0 0 739916 876 149788 0 0 2 0 15 22 0 0 100 0 0 20 0 0 0 739904 876 149788 0 0 0 0 51 50 0 0 100 0 0 21 0 0 0 739904 876 149788 0 0 0 0 26 39 0 0 100 0 0 22 0 0 0 739904 876 149788 0 0 0 0 31 42 0 0 100 0 0 23 0 0 0 739904 876 149788 0 0 0 0 25 37 0 0 100 0 0
说明:
- proc 显示进程相关信息
- r:=run,表示运行中或等待cpu运行的进程数,如果该数长期大于服务器CPU个数,则说明CPU不够用了。
- b:表示等待资源的进程数,如,等待I/O,内存等,这列的值如果长时间大于1,则需要关注一下。
- memory 内存相关信息
- swpd:表示切换到交换分区的内存量(当该数据不断变化时说明内存不足)
- free:表示当前空闲的内存量
- buff:缓冲大小
- cache:缓存大小
- swap 内存交换情况
- si:=storage in,表示交换区写入到内存的数据量
- so:=storage out,表示由内存写入到交换区的数据量
- io 磁盘使用情况
- bi:=block in,表示从块设备读取数据(写入内存)的量(即:读磁盘)
- bo:=block out,表示(从内存读取)写入到块设备的数据(即:写磁盘)
注: 此处数据会直接关系到proc出的b的值。
- system 显示采集间隔内发生的中断次数
- in:表示在某一时间间隔中观测到的每秒设备中断数
- cs:表示每秒产生的上下文切换次数
- CPU 显示CPU的使用状态(us+sy+id=100%)
- us:表示用户资源所花费CPU的百分比(当该值长时间>50时说明CPU数量不足)
- sy:表示系统资源所花费CPU的百分比
- id:表示CPU处于空闲状态的百分比
- wa:=wait,表示等待使用CPU的百分比(该数值大说明CPU不足)
- st:表示被偷走的CPU所占百分比(该值一般为0,不用关注)
10.3 top命令
>top命令可以实时动态地(每3秒变一次)查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。其特点是把占用系统资源(CPU,内存,磁盘IO等)最高的进程放在最前面,以确认是哪个进程占用内存。
top用法
语法: top [options]
Options:
-b:批量处理模式
-c:显示详细进程信息
-bn1:静态显示所有进程(该法多用于shell脚本)
1[root@cham2 ~]# top 2top - 15:30:59 up 10:34, 1 user, load average: 0.00, 0.01, 0.05 3Tasks: 99 total, 1 running, 98 sleeping, 0 stopped, 0 zombie 4%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 st 5KiB Mem : 1008416 total, 739152 free, 118364 used, 150900 buff/cache 6KiB Swap: 3905532 total, 3905532 free, 0 used. 729416 avail Mem 7 8 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9 1 root 20 0 125096 3596 2392 S 0.0 0.4 0:02.24 systemd 10 2 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kthreadd 11 3 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 12 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 13 7 root rt 0 0 0 0 S 0.0 0.0 0:00.04 migration/0 14 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 15 9 root 20 0 0 0 0 S 0.0 0.0 0:02.57 rcu_sched 16 10 root rt 0 0 0 0 S 0.0 0.0 0:00.15 watchdog/0 17 11 root rt 0 0 0 0 S 0.0 0.0 0:00.44 watchdog/1 18 12 root rt 0 0 0 0 S 0.0 0.0 0:00.13 migration/1 19 13 root 20 0 0 0 0 S 0.0 0.0 0:00.07 ksoftirqd/1 20 17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 khelper 21 18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs 22 19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns 23 20 root 20 0 0 0 0 S 0.0 0.0 0:00.01 khungtaskd 24 21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback 25 22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd 26 23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset 27 24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd 28 25 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md 29 26 root 20 0 0 0 0 S 0.0 0.0 0:15.20 kworker/0:1 30 32 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0 31 33 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd 32 34 root 39 19 0 0 0 S 0.0 0.0 0:00.15 khugepaged 33 35 root 20 0 0 0 0 S 0.0 0.0 0:00.00 fsnotify_mark 34 36 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto 35 44 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld 36 45 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kworker/u128:1 37 46 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kmpath_rdacd 38 47 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 39 49 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ipv6_addrconf 40 68 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 deferwq 41 100 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kauditd 42 239 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ata_sff 43 241 root 20 0 0 0 0 S 0.0 0.0 0:00.01 scsi_eh_0 44 243 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_0 45 245 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1 46 246 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_1 47 247 root 20 0 0 0 0 S 0.0 0.0 0:01.19 kworker/u128:2 48 250 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 ttm_swap 49 257 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 mpt_poll_0 50 258 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 mpt/0 51 265 root 20 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2 52 266 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 scsi_tmf_2 53 288 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 xfsalloc 54 289 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 xfs_mru_cache
注: 在top状态下(按q退出),按shift+m可以按内存使用大小进行排序(默认以CPU使用占比排序),按shift+p恢复按CPU使用占比排序,,按数字1可以显示每个CPU的状态。
说明:
- 第一行是负载信息
- 第二行是进程信息
- 第三行是CPU使用信息
- 第四行是内存使用信息
- 第五行是交换区使用信息
- 最下面是进程详细信息:
- PID:表示进程在系统中的id号,可配合kill命令结束某进程
- RES:表示进程所用物理内存大小(单位:KB)
- %MEM:表示内存使用百分比(单位:KB)
10.4 sar命令
>sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态(如,平均负载,网卡流量,磁盘状态,内存使用等)计数器显示到标准输出设备。它不同于其他系统状态监控工具的地方在于,它可以打印历史信息,可以显示从零点开始到当前时刻的系统状态信息。
sar用法
使用‘yum install -y sysstat’安装该命令!初次使用sar命令(不加选项、参数)会报错,原因是sar命令还没有生成相应的数据库文件。其数据库保存在‘/var/log/sa/’目录下,该目录下存放两种文件,分别以‘sa日期’&‘sar日期’的格式命名(区别是sar文件在第二天生成,可以使用cat命令查看;sa文件实时<每个整‘10’分钟更新一次>生成,是二进制文件,无法查看),最多保留一个月。
语法: sar [options] [参数]
Options:
-f:从指定文件提取报告
-
sar -n DEV m n 查看网卡流量(在此m、n的用法同vmstat命令!)
1[root@cham2 ~]# yum install -y sysstat 没有sar命令的话需要安装 2已加载插件:fastestmirror 3 4 5已安装: 6 sysstat.x86_64 0:10.1.5-12.el7 7 8作为依赖被安装: 9 lm_sensors-libs.x86_64 0:3.4.0-4.20160601gitf9185e5.el7 10 11完毕! 12[root@cham2 ~]# sar 13无法打开 /var/log/sa/sa27: 没有那个文件或目录 14[root@cham2 ~]# ls /var/log/sa 15sa27 16[root@cham2 ~]# date 172017年 11月 27日 星期一 18:40:52 CST 18[root@cham2 ~]# sar -n DEV 1 10 19Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU) 20 2118时41分19秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 2218时41分20秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2318时41分20秒 ens33 0.00 0.00 0.00 0.00 0.00 0.00 0.00 24 2518时41分20秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 2618时41分21秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 2718时41分21秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 28 2918时41分21秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 3018时41分22秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3118时41分22秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 32 3318时41分22秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 3418时41分23秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3518时41分23秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 36 3718时41分23秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 3818时41分24秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 3918时41分24秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 40 4118时41分24秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 4218时41分25秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4318时41分25秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 44 4518时41分25秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 4618时41分26秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 4718时41分26秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 48 4918时41分26秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 5018时41分27秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5118时41分27秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 52 5318时41分27秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 5418时41分28秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5518时41分28秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 56 5718时41分28秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 5818时41分29秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 5918时41分29秒 ens33 1.00 1.00 0.06 0.40 0.00 0.00 0.00 60 61平均时间: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 62平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 63平均时间: ens33 0.90 0.90 0.05 0.36 0.00 0.00 0.00说明:
-
rxpck/s:表示接收数据(包)的个数
-
txpck/s:表示发送数据(包)的个数
-
rxKB/s:表示接收的数据量
-
txKB/s:表示发送的数据量
注: 当rxpck/s的值大于4000或者rxKB/s的值大于5000时则可能是在被攻击(需配合抓包工具进一步确认)!
sar -q 查看系统负载(配合-f选项使用,查看历史负载)
1[root@cham2 ~]# sar -n DEV -f /var/log/sa/sa27 2Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU) 3 418时40分01秒 IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 518时50分01秒 lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 618时50分01秒 ens33 0.25 0.18 0.02 0.03 0.00 0.00 0.00 7平均时间: lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 8平均时间: ens33 0.25 0.18 0.02 0.03 0.00 0.00 0.00
sar -b 查看磁盘信息
1[root@cham2 ~]# sar -b 2Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU) 3 418时40分01秒 tps rtps wtps bread/s bwrtn/s 518时50分01秒 0.05 0.00 0.05 0.00 0.57 6平均时间: 0.05 0.00 0.05 0.00 0.57 7[root@cham2 ~]# sar -b 1 5 8Linux 3.10.0-514.el7.x86_64 (cham2) 2017年11月27日 _x86_64_ (2 CPU) 9 1018时52分24秒 tps rtps wtps bread/s bwrtn/s 1118时52分25秒 0.00 0.00 0.00 0.00 0.00 1218时52分26秒 0.00 0.00 0.00 0.00 0.00 1318时52分27秒 0.00 0.00 0.00 0.00 0.00 1418时52分28秒 0.00 0.00 0.00 0.00 0.00 1518时52分29秒 0.00 0.00 0.00 0.00 0.00 16平均时间: 0.00 0.00 0.00 0.00 0.00
10.5 nload命令
使用前需要先安装该命令:
1[root@cham2 ~]# yum install epel-release 2已加载插件:fastestmirror 3 4 5 6[root@cham2 ~]# yum install -y nload 7已加载插件:fastestmirror
注: 在安装此包前需要先安装yum扩展源:epel-release。
用法:nload

注: 在该界面显示系统网络动态信息,可使用方向键在不同网卡之间进行切换,按q键退出,根据实时网速和总网速的比较可以评估网络状态!
