查看进程
可以利用静态的ps或是动态的top命令,还可以利用pstree来查看进程树之间的关系
ps
ps [option]...
选项:支持两种风格
#查看系统所有的进程
[root@localhost ~]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.2 128348 6964 ? Ss 08:12 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
[root@localhost ~]# ps -lA
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 32087 ep_pol ? 00:00:03 systemd
#连同部分进程树状态一起显示
[root@localhost ~]# ps -axjf
选项与参数:
-A:所有进程均显示出来,与-e效果一样
-a:不显示与终端有关的所有进程
-u:有效使用者(effective user)相关的进程
-e:显示所有进程
-H:以层级结构显示
-F:以完整格式显示进程信息
-U username:以哪个用户身份运行的进程
x:通常与a这个参数一起使用,可列出较完整信息
输出格式规则:
l:较长、较详细的将该PID的信息列出
j:任务格式(jobs format)
-f:显示完整的命令格式
[root@localhost ~]# ps -A
PID TTY TIME CMD
1 ? 00:00:04 systemd
2 ? 00:00:00 kthreadd
3 ? 00:00:00 ksoftirqd/0
5 ? 00:00:00 kworker/0:0H
7 ? 00:00:00 migration/0
[root@localhost ~]# ps -a
PID TTY TIME CMD
9942 pts/2 00:00:00 su
9944 pts/2 00:00:00 bash
13779 pts/0 00:00:00 ps
[root@localhost ~]# ps -u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9921 0.0 0.0 115436 2004 pts/2 Ss 09:09 0:00 -bash
root 9942 0.0 0.0 191884 2444 pts/2 S 09:09 0:00 su - test3
root 12008 0.0 0.0 115432 2008 tty1 Ss+ 09:44 0:00 -bash
root 12028 0.0 0.0 110088 848 tty2 Ss+ 09:44 0:00 /sbin/agetty --noclear tty2 linux
root 12030 0.0 0.0 110088 848 tty3 Ss+ 09:44 0:00 /sbin/agetty --noclear tty3 linux
root 12037 0.0 0.0 110088 852 tty5 Ss+ 09:44 0:00 /sbin/agetty --noclear tty5 linux
root 12039 0.0 0.0 110088 848 tty6 Ss+ 09:44 0:00 /sbin/agetty --noclear tty6 linux
root 13226 0.0 0.0 115436 2060 pts/0 Ss 10:07 0:00 -bash
root 13829 0.0 0.0 155324 1860 pts/0 R+ 10:19 0:00 ps -u
[root@localhost ~]# ps -axl
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
4 0 1 0 20 0 128348 6964 ep_pol Ss ? 0:04 /usr/lib/systemd/systemd --switched-root --system --deseriali
[root@nginx01 ~]# ps -eFH | grep sshd
root 1272 1 0 28204 4304 3 21:55 ? 00:00:00 /usr/sbin/sshd -D
root 1700 1272 0 40354 6020 2 21:57 ? 00:00:00 sshd: root@pts/0
root 1844 1272 0 40355 6020 3 22:21 ? 00:00:00 sshd: root@pts/1
root 1874 1846 0 28176 968 1 22:27 pts/1 00:00:00 grep --color=auto sshd
#-l :仅查看自己的bash相关进程: ps -l
[root@localhost ~]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 13226 13221 0 80 0 - 28859 do_wai pts/0 00:00:00 bash
0 R 0 14121 13226 0 80 0 - 38300 - pts/0 00:00:00 ps
#显示指定字段的进程信息
[root@nginx01 ~]# ps axo pid,psr,command | head
PID PSR COMMAND
1 0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
2 1 [kthreadd]
3 0 [ksoftirqd/0]
5 0 [kworker/0:0H]
7 0 [migration/0]
8 0 [rcu_bh]
9 2 [rcu_sched]
10 0 [lru-add-drain]
11 0 [watchdog/0]
:<<!
F:代表这个进程标识(process flags),说明这个进程的权限,常见号码有:
- 若为4表示此进程的权限为root
- 若为1表示此子进程仅执行复制(fork)而没有实际执行(exec)
S:代表这个进程的状态(STAT)
- R(Running):该进程正在运行中
- S(Interruptable Sleeping):该进程目前正在睡眠状态(idle),但可以被唤醒(signal)
- D(Uninterruptable Sleeping):不可被唤醒的睡眠状态,通常这个进程可能在等待I/O的情况(ex>打印)
- T:停止状态(stop),可能是在任务控制(后台暂停)或跟踪(traced)状态
- Z(Zombie):僵尸状态,进程已经终止却无法被删除至内存中
- 【+】:表示前台进程
- 【l】:多线程进程
- 【N】:低优先级进程
- 【<】:高优先级进程
- 【s】:session leader
UID,PID,PPID:代表此进程被UID所拥有;进程的PID号码;此进程的父进程PID号码
C:代表CPU使用率,单位百分比
PRI/NI:Priority/Nice的缩写,代表此进程被CPU所执行的优先级,数值越小代表该进程越快被CPU执行。
ADDR/S/WCHAN:都与内存相关,ADDR是kernel function,指出该进程在内存的哪个部分,如果是个running的进程,一般会显示【-】;SZ代表此进程用掉多少内存;WCHAN表示目前进程是否运行,同样的,若为-表示正在运行中。
TTY:登录者的终端位置,若为远程登录则使用动态终端接口名称(pts/#)
TIME:使用的CPU时间,注意,是此进程实际花费CPU运行的时间,而不是系统时间
COMMAND:此进程触发进程的命令是什么。
!
查看系统所有进程:ps aux
# a:与终端无关的进程
# u:以用户为中心组织进程状态信息显示
# x:与终端无关的进程
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.2 128340 6980 ? Ss 08:42 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 08:42 0:00 [kthreadd]
......(中间省略)......
root 2187 0.0 0.0 155324 1860 pts/0 R+ 09:05 0:00 ps aux
USER:该进程所属的用户账号
PID:该进程的进程ID
%CPU:该进程使用的CPU资源百分比
%MEM:该进程所占用的物理内存百分比
VSZ(Virtual memory Size):该进程使用掉的虚拟内存量(KB)
RSS(ReSident Size):该进程使用掉的常驻内存量
TTY:该进程在哪个终端上面运行,若与终端无关则显示??另外tty1-tty6是本机上面的登录进程,若为pts/0等,则表示由网络连接进入主机的进程。
STAT:该进程目前的状态,状态显示与ps -l的S标识相同
START:该进程被触发启动的时间
TIME:该进程被触发实际使用CPU运行的时间
COMMAND:该进程触发的命令
注:ps aux会依照PID顺序来排序显示
pgrep
pgrep [option] pattern
pkill [option] pattern
-u uid:effective user
-U uid:真实用户
-t terminal:与指定终端相关的进程
-l:显示进程名
-a:显示完整格式的进程名
-P pid:显示其父进程为此处指定进程的进程列表
pidof
#根据进程名获取进程pid
[root@nginx01 ~]# pidof sshd
1844 1700 1272
top
#动态查看进程的变化
#内置命令:排序--P:以占据的CPU百分比,--M:以内存使用率,--C:以CPU使用率
[root@nginx01 ~]# uptime
22:44:58 up 50 min, 2 users, load average: 0.01, 0.02, 0.05
[root@localhost ~]# top
top - 09:20:14 up 37 min, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 112 total, 1 running, 110 sleeping, 1 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2719300 total, 2381132 free, 159636 used, 178532 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 2368980 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1124 root 20 0 298636 6156 4784 S 0.7 0.2 0:03.23 vmtoolsd
2192 root 20 0 161940 2184 1540 R 0.3 0.1 0:00.23 top
1 root 20 0 128340 6980 4088 S 0.0 0.3 0:02.57 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
注: 默认情况下,每次更新进程资源的时间为5秒,不过,可以使用-d来进行修改
top主要分为两部分,上面为整个系统的资源使用情况,下面是每个进程使用的资源情况
- 上面部分
* 第一行uptime(top...)信息(通过l进行切换显示和隐藏):
+ 当前时间:09:20:14
+ 开机到目前为止所经过的时间:37 min
+ 已经登录的用户人数:3 users
+ load average 系统在1,5,15分钟的平均任务负载。数值越小代表系统越闲置,若高于1就要注意你的系统进程是否太过频繁了
* 第二行(Tasks...):显示的是目前进程的总量与个别进程在什么状态(running,sleeping,stopped,zombie),需要注意zombie的数值,如果不为0,则需要好好查查这个zombie。注:通过【t】可以显示/隐藏此行
* 第三行(%cpus...):显示的是CPU的整体负载,每个项目可以使用?查看,需要特别注意的是wa项目,代表的是I/O wait,通常系统变慢的原因都是I/O产生的问题比较大。因此这里要注意这个项目耗用CPU资源。
+ us:用户空间使用的CPU百分比
+ sy:内核空间使用的CPU百分比
+ id(idle):空闲的CPU百分比
+ wa(Wait):等待IO完成百分比
+ hi(hard interrupt):CPU处理硬中断所占用的百分比
+ si(soft interrupt):CPU处理软中断所占用的百分比
+ st(steal):被虚拟化偷走的CPU百分比
* 第四行与第五行:表示目前的物理内存与虚拟内存(Mem/Swap)的使用情况。再次重申,要注意swap的使用要尽量少,如果swap使用过多,说明物理内存不足,注:通过【t】可以显示/隐藏此行
* 第六行:这个是当在top进程当中输入命令时,显示状态的部分
- 下面部分
* PID:每个进程的ID
* USER:该进程所属用户
* PR:priority的简写,进程的优先执行顺序,越小表示越早被执行
* NI:Nice的简写,与priority有关,也是越小越早被执行
* VIRT:虚拟内存集
* RES:常驻内存集
* SHR:共享内存大小
* S:表示状态
* %CPU:CPU的使用率
* %MEM:内存的使用率
* TIME+:CPU使用时间的累加
注:top默认使用CPU使用率(%CPU)作为排序依据,按M切换至Memory排序,N切换至PID排序,P切换至CPU排序,q退出top
#在top命令中可直接杀死进程,敲【k】键,输入进程ID即可
PID to signal/kill [default pid = 1]
#修改刷新时间间隔:敲【s】
# -d #:指定刷新时间间隔,默认为3秒
# -b:以批次方式显示
# -n #:显示多少批次
# 查看当前bash的PID
[root@localhost ~]# echo $$
2096
# -d 设置刷新的秒数,-p指定要显示的进程数
[root@localhost ~]# top -d 10 -p 2096
top - 09:44:18 up 1:01, 3 users, load average: 0.00, 0.03, 0.05
Tasks: 1 total, 0 running, 1 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 st
KiB Mem : 2719300 total, 2319228 free, 178820 used, 221252 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 2335636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2096 root 20 0 115436 2100 1672 S 0.0 0.1 0:00.07 bash
#修改nice值
[root@localhost ~]# top -d 10 -p 2096
top - 09:46:41 up 1:03, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 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 st
KiB Mem : 2719300 total, 2319244 free, 178804 used, 221252 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 2335652 avail Mem
Renice PID 2096 to value 10
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2096 root 20 0 115436 2100 1672 S 0.0 0.1 0:00.07 bash
#修改nice后如下显示:
top - 09:47:19 up 1:04, 3 users, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.1 sy, 0.0 ni, 99.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 2719300 total, 2319244 free, 178804 used, 221252 buff/cache
KiB Swap: 1048572 total, 1048572 free, 0 used. 2335652 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2096 root 30 10 115436 2100 1672 S 0.0 0.1 0:00.07 bash
pstree
[root@localhost ~]# pstree
选项与参数:
-A:各进程树之间以ASCII字符来连接
-U:各进程树之间以Unicode的字符来连接,默认显示
-p:同时列出每个进程的PID
-u:同时显示每个进程所属的用户账号名称
查看系统资源信息
free
查看内存使用情况
#默认显示是kb
[root@localhost ~]# free
total used free shared buff/cache available
Mem: 2719300 160140 2380248 9804 178912 2368168
Swap: 1048572 0 1048572
#以字节(Bytes)形式显示
[root@localhost ~]# free -b
total used free shared buff/cache available
Mem: 2784563200 163983360 2437373952 10039296 183205888 2425004032
Swap: 1073737728 0 1073737728
#以MB形式显示
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem: 2655 156 2324 9 174 2312
Swap: 1023 0 1023
#以gb形式展示小数会舍去
[root@localhost ~]# free -g
total used free shared buff/cache available
Mem: 2 0 2 0 0 2
Swap: 0 0 0
#以人类容易识别的方式显示
[root@localhost ~]# free -h
total used free shared buff/cache available
Mem: 2.6G 156M 2.3G 9.6M 174M 2.3G
Swap: 1.0G 0B 1.0G
#指定时间刷新显示(秒)
[root@localhost ~]# free -s 1
pmap
#报告进程的内存映射
pmap [options] pid [...]
-x:显示详细格式的信息
[root@nginx01 ~]# cat /proc/1/maps
glances
#常用选项
-b:以bytes为单位显示网卡数据速率
-d:关闭磁盘IO模块
-f /path/to/somefile:设定输入文件位置
-o {html/csv}:输出格式
-m:禁用mount模块
-n:禁用网络模块
-t #:延迟时间间隔
-1:每个CPU相关数据单独显示
#服务器模式
[root@nginx01 ~]# glances -s -B 192.168.88.101
Glances server is running on 192.168.88.101:61209
#通过客户端连接服务器
[root@nginx01 ~]# glances -c 192.168.88.101
uname
查看系统和内核相关信息
#所有系统相关的信息
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
#系统内核名称
[root@localhost ~]# uname -s
Linux
#内核版本
[root@localhost ~]# uname -r
3.10.0-862.el7.x86_64
#本系统的硬件架构
[root@localhost ~]# uname -m
x86_64
#cpu架构
[root@localhost ~]# uname -p
x86_64
#硬件平台
[root@localhost ~]# uname -i
x86_64
uptime
查看系统启动时间与任务负载
#top命令的第一行内容,当前时间,系统运行时间,以及1,5,15分钟内的平均负载情况
[root@localhost ~]# uptime
09:15:34 up 31 min, 3 users, load average: 0.00, 0.01, 0.05
netstat | ss
#man netstat文档中显示netstat已经过时了,
#his program is obsolete. Replacement for netstat is ss. Replacement for netstat -r is ip route. Replacement for netstat -i is ip -s link. Replacement for netstat -g is ip maddr
# -t:列出tcp网络封包的信息
# -u:列出udp网络封包的信息
# -n:不以进程的服务名称显示,而是以端口号(port number)来显示
# -p:列出目前系统已建立的网络连接与unix socket状态
[root@localhost ~]# ss -tnlp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1622,fd=3))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1906,fd=13))
LISTEN 0 128 :::22 :::* users:(("sshd",pid=1622,fd=4))
LISTEN 0 100 ::1:25 :::* users:(("master",pid=1906,fd=14))
[root@localhost ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1622/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1906/master
tcp6 0 0 :::22 :::* LISTEN 1622/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1906/master
vmstat
#查看虚拟内存相关信息
[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 2335972 2108 201576 0 0 52 6 71 117 0 1 99 0 0
# -a使用inact/active(活动与否)替换buffer/cache的内存输出信息
# -S 后面可以接单位,让显示的数据有单位,如K/M替换Bytes的容量
[root@localhost ~]# vmstat -a -S M
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
2 0 0 2281 80 114 0 0 49 6 70 114 0 1 99 0 0
#数据类似于/proc/memoinfo,显示内存统计数据
[root@nginx01 ~]# vmstat -s
7992344 K total memory
157568 K used memory
228976 K active memory
110692 K inactive memory
7492368 K free memory
2108 K buffer memory
340300 K swap cache
4063228 K total swap
0 K used swap
4063228 K free swap
437 non-nice user cpu ticks
21 nice user cpu ticks
1103 system cpu ticks
846069 idle cpu ticks
1245 IO-wait cpu ticks
0 IRQ cpu ticks
49 softirq cpu ticks
0 stolen cpu ticks
282163 pages paged in
64401 pages paged out
0 pages swapped in
0 pages swapped out
329354 interrupts
307775 CPU context switches
1654121630 boot time
2006 forks
# -d:列出磁盘的读写总量统计表
[root@localhost ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------
total merged sectors ms total merged sectors ms cur sec
sr0 18 0 2056 72 0 0 0 0 0 0
sda 6535 14 313178 6045 715 156 35814 988 0 5
sdb 116 0 1856 23 0 0 0 0 0 0
sdc 102 0 816 13 0 0 0 0 0 0
sdd 131 0 1848 17 0 0 0 0 0 0
sde 102 0 816 10 0 0 0 0 0 0
sdf 102 0 816 12 0 0 0 0 0 0
dm-0 4825 0 250605 5533 851 0 27540 1278 0 4
dm-1 94 0 4456 27 0 0 0 0 0 0
dm-2 262 0 3551 62 10 0 4137 13 0 0
dm-3 43 0 2072 18 0 0 0 0 0 0
# 后面跟数字显示间隔时间和显示次数(下例:每秒一次,共显示3次)
[root@localhost ~]# vmstat 1 3
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 2336120 2108 201608 0 0 47 5 68 110 0 1 99 0 0
0 0 0 2336096 2108 201608 0 0 0 0 50 49 0 0 100 0 0
0 0 0 2336096 2108 201608 0 0 0 0 44 34 0 1 99 0 0
- proc字段
* r:等待运行的进程数量
* b不可被唤醒(不可中断睡眠)的进程数量(被阻塞队列长度)
这两个项目越多,代表系统越忙碌
- memory字段
* swpd:虚拟内存(交换内存)被使用的总量
* free:未被使用的内存容量(空闲物理内存总量)
* buff:用于缓冲存储器的内存总量
* cache:用于高速缓存的内存总量
- swap字段
* si:数据进入swap中的数据速率(kb/s)
* so:数据离开swap中的数据速率(kb/s)
如果so/si的数值太大,表示内存中的数据常常得在磁盘与内存之间传输,系统性能极差
- io字段
* bi:由块设备读入数据到系统的速率(kb/s)
* bo:写入数据到块设备的速率
这部分值越高,代表IO越忙碌
- system字段
* in(interrupts):每秒被中断的进程次数
* cs(context switch):每秒执行的事件切换次数
这两个值越大,代表系统与外接设备的沟通越频繁
- cpu字段
* us:非内核层(用户空间)的cpu使用状态
* sy:内核层所使用的cpu状态
* id(idle):闲置的状态
* wa(wait):等待I/O所耗费的cpu状态
* st():被虚拟机所使用的cpu状态
dstat
[root@nginx01 ~]# dstat 1 10
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ| recv send| in out | int csw
0 0 100 0 0 0| 144k 22k| 0 0 | 0 0 | 152 129
0 0 100 0 0 0| 0 0 | 60B 842B| 0 0 | 109 94
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 89 79
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 104 96
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 97 88
0 0 100 0 0 0| 0 0 | 106B 422B| 0 0 | 95 86
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 91 83
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 94 86
0 0 100 0 0 0| 0 336k| 120B 422B| 0 0 | 139 95
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 93 84
0 0 100 0 0 0| 0 0 | 60B 362B| 0 0 | 90 81
#--total-cpu-usage:CPU使用情况
#--dsk/total:磁盘读写速率
#--net/total:网络收发速率
#--paging:页面换入换出速率
#--system:中断和上下文切换速率
dstat [-afv] [options..] [delay [count]]
##选项
-c:显示CPU相关信息
-C #,#...,total:
-d:显示disk相关信息
-D total,sda
-g:显示Page相关统计数据
-i:显示中断统计数据
-l:显示load-avg信息
-m:显示内存相关信息
-n:显示网络相关信息
-p|--proc:显示进程统计数据(running,uninterruptable,new)
-r|--io:显示IO请求统计数据
-s:显示swap统计数据
-y:显示系统统计数据(interrupts中断, context switches上下文切换)
--fs|--filesystem:显示文件系统统计数据
--ipc:显示进程间通信统计数据(message queue消息队列,semaphores信号量,shared memory共享内存)
--lock:显示文件锁统计信息
--socket:显示socket统计信息(total,tcp,udp,raw,ip-fragments)
--tcp:显示TCP统计信息(listen,established,syn,time_wait,close)
--udp:显示UDP统计信息(listen,active)
--vm:显示VM统计信息(hard pagefaults,soft pagefaults,allocated,free)
--unix:显示unix统计信息(datagram,stream,listen,active)
-a: 默认,同-cdngy
--top-cpu:最消耗CPU的进程
--top-lantency:显示延迟最大的进程
--top-io:最消耗IO的进程
--top-mem:最消耗内存的进程
[root@nginx01 ~]# dstat -D total,sda
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total----dsk/sda-- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read writ: read writ| recv send| in out | int csw
0 0 100 0 0 0| 121k 22k: 121k 22k| 0 0 | 0 0 | 139 118
0 0 100 0 0 0| 0 0 : 0 0 | 60B 954B| 0 0 | 62 51
[root@nginx01 ~]# dstat -i
----interrupts---
18 19 56
0 4 0
0 2 0
[root@nginx01 ~]# dstat -l
---load-avg---
1m 5m 15m
0 0.01 0.05
[root@nginx01 ~]# dstat -m
------memory-usage-----
used buff cach free
207M 2108k 266M 7330M
207M 2108k 266M 7330M
[root@nginx01 ~]# dstat -n
-net/total-
recv send
0 0
60B 218B
[root@nginx01 ~]# dstat -p
---procs---
run blk new
0 0 0.9
0 0 0
[root@nginx01 ~]# dstat -r
--io/total-
read writ
1.96 0.21
[root@nginx01 ~]# dstat --fs
--filesystem-
files inodes
1408 22784
[root@nginx01 ~]# dstat --ipc
--sysv-ipc-
msg sem shm
0 0 0
[root@nginx01 ~]# dstat --lock
---file-locks--
pos lck rea wri
2.0 3.0 0 5.0
[root@nginx01 ~]# dstat --socket
------sockets------
tot tcp udp raw frg
573 5 2 0 0
573 5 2 0 0
[root@nginx01 ~]# dstat --tcp
----tcp-sockets----
lis act syn tim clo
4 3 0 0 0
4 3 0 0 0
4 3 0 0 0
[root@nginx01 ~]# dstat --udp
--udp--
lis act
3 0
[root@nginx01 ~]# dstat --vm
-----virtual-memory----
majpf minpf alloc free
0 424 282 894
0 13 1 2
[root@nginx01 ~]# dstat --unix
--unix-sockets-
dgm str lis act
28 119 31 88
[root@nginx01 ~]# dstat -y
---system--
int csw
111 95
[root@nginx01 ~]# dstat --top-cpu
-most-expensive-
cpu process
vmtoolsd 0.0
/proc/*
内存中的数据写入到/proc/*这个目录下
#加载内核时所执行的命令与参数,查看此文件可以了解命令是如何启动的
[root@localhost ~]# cat /proc/cmdline
BOOT_IMAGE=/vmlinuz-3.10.0-862.el7.x86_64 root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=en_US.UTF-8
#本机cpu的相关信息,包含频率、类型与功能等
[root@localhost ~]# cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 60
model name : Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
stepping : 3
microcode : 0x24
cpu MHz : 2594.007
cache size : 3072 KB
physical id : 0
siblings : 1
core id : 0
cpu cores : 1
apicid : 0
initial apicid : 0
fpu : yes
fpu_exception : yes
cpuid level : 13
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu 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 fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid xsaveopt ibpb ibrs stibp arat spec_ctrl intel_stibp arch_capabilities
bogomips : 5188.01
clflush size : 64
cache_alignment : 64
address sizes : 43 bits physical, 48 bits virtual
power management:
#目前系统加载的文件系统
[root@localhost ~]# cat /proc/filesystems
nodev sysfs
nodev rootfs
nodev ramfs
nodev bdev
nodev proc
nodev cgroup
nodev cpuset
nodev tmpfs
nodev devtmpfs
nodev debugfs
nodev securityfs
nodev sockfs
nodev dax
nodev pipefs
nodev anon_inodefs
nodev configfs
nodev devpts
nodev hugetlbfs
nodev autofs
nodev pstore
nodev mqueue
nodev selinuxfs
xfs
#目前系统IRQ分配状况
[root@localhost ~]# cat /proc/interrupts
CPU0
0: 121 IO-APIC-edge timer
1: 10 IO-APIC-edge i8042
8: 1 IO-APIC-edge rtc0
9: 0 IO-APIC-fasteoi acpi
12: 16 IO-APIC-edge i8042
14: 0 IO-APIC-edge ata_piix
15: 5565 IO-APIC-edge ata_piix
16: 0 IO-APIC-fasteoi vmwgfx, snd_ens1371
17: 8186 IO-APIC-fasteoi ehci_hcd:usb1, ioc0
18: 65 IO-APIC-fasteoi uhci_hcd:usb2
19: 8850 IO-APIC-fasteoi ens33
(..省略..)
# 使用free列出的内存信息
[root@localhost ~]# cat /proc/meminfo
MemTotal: 2719300 kB
MemFree: 2335980 kB
MemAvailable: 2335016 kB
Buffers: 2108 kB
Cached: 121180 kB
SwapCached: 0 kB
Active: 117380 kB
Inactive: 82676 kB
Active(anon): 77240 kB
Inactive(anon): 9300 kB
Active(file): 40140 kB
Inactive(file): 73376 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 1048572 kB
SwapFree: 1048572 kB
Dirty: 0 kB
Writeback: 0 kB
AnonPages: 76792 kB
Mapped: 27188 kB
Shmem: 9772 kB
Slab: 80544 kB
SReclaimable: 39876 kB
SUnreclaim: 40668 kB
KernelStack: 4128 kB
PageTables: 5728 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 2408220 kB
Committed_AS: 349268 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 186756 kB
VmallocChunk: 34359310332 kB
HardwareCorrupted: 0 kB
AnonHugePages: 10240 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 163712 kB
DirectMap2M: 1753088 kB
DirectMap1G: 1048576 kB
#Linux已经加载的模块列表,也可以想成是驱动程序
[root@localhost ~]# cat /proc/modules
af_packet_diag 12611 0 - Live 0xffffffffc06fb000
netlink_diag 12669 0 - Live 0xffffffffc06f6000
vsock_diag 12610 0 - Live 0xffffffffc06f1000
sctp_diag 12845 0 - Live 0xffffffffc0701000
sctp 270556 3 sctp_diag, Live 0xffffffffc06ad000
udp_diag 12801 0 - Live 0xffffffffc06a8000
unix_diag 12601 0 - Live 0xffffffffc06a3000
tcp_diag 12591 0 - Live 0xffffffffc069e000
(..省略..)
#系统已挂载的数据,就是用mount这个命令调出来的数据
[root@localhost ~]# cat /proc/mounts
rootfs / rootfs rw 0 0
sysfs /sys sysfs rw,seclabel,nosuid,nodev,noexec,relatime 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
devtmpfs /dev devtmpfs rw,seclabel,nosuid,size=1347420k,nr_inodes=336855,mode=755 0 0
securityfs /sys/kernel/security securityfs rw,nosuid,nodev,noexec,relatime 0 0
(..省略..)
#系统已经挂载入的内存在哪里?使用的硬盘记录在此
[root@localhost ~]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 0 -1
#使用fdisk -l会出现目前所有的硬盘分区
[root@localhost ~]# cat /proc/partitions
major minor #blocks name
11 0 4365312 sr0
8 0 20971520 sda
8 1 2048 sda1
8 2 1048576 sda2
8 3 16785408 sda3
8 16 1048576 sdb
8 32 1048576 sdc
8 48 1048576 sdd
8 64 1048576 sde
8 80 1048576 sdf
253 0 10485760 dm-0
253 1 1048576 dm-1
253 2 5242880 dm-2
253 3 2621440 dm-3
#uptime第一行的后三个值(负载值)
[root@localhost ~]# cat /proc/loadavg
0.00 0.01 0.05 2/133 2503
#内核的版本
[root@localhost ~]# cat /proc/version
Linux version 3.10.0-862.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC) ) #1 SMP Fri Apr 20 16:44:24 UTC 2018
kill 进程
kill可以帮我们将这个信号传送给某个任务(%jobnumber)或者某个PID
#显示支持的信号
[root@nginx01 ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
重要信号:
1(SIGHUP):让一个进程不用重启,就可以重读其配置文件,并让新的配置信息生效
2(SIGINT):ctrl+c 中止正在运行的进程
9(SIGKILL):杀死一个进程
15(SIGTERM):终止一个进程
18(SIGCONT):
19(SIGSTOP):
指定信号的方法:
1)信号的数字标识:1,2,9
2)信号完整名称:SIGUP
3)信号的简写名称:HUP
kill -singal PID 默认使用15信号终止进程
killall 删除服务
-i:interactive:互动的意思,若需要删除时,会出现提示字符给使用者
killall -singal program 杀死所有进程
bg(background),fg(foreground)
前台(fg):占用了命令提示符
后台(bg):启动之后,释放命令提示符,后续的操作在后台执行
前台-->后台,
使用ctrl+z:将正在前台运行的命令切换至后台
command &:让命令在后台运行
nohup command &:送往后台,剥离与终端的关系
bg:让后台停止的作业继续运行
bg [%JOBID]
fg:将后台停止的作业继续运行
fg [%JOBID]
jobs:查看后台的所有作业
作业号,不同于进程号
+:将默认操作的作业
-:将第二个默认操作的作业
#查看所有的作业
[root@nginx01 ~]# jobs
[1] Stopped htop
[2]- Stopped dstat
[3]+ Stopped top
pidof:查看某个正在执行的进程的PID
[root@lotus ~]# pidof init
1