进程管理

1、ps命令

查看当前时刻的进程状态,通过此命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等

进程状态:
    运行态:running
    就绪态:ready
    睡眠态:
        可中断:interruptable
        不可中断:uninterruptable
    停止态:stopped, 暂停于内存中,但不会被调度,除非手动启动
    僵死态:zombie,父进程结束了,但是子进程却没结束

(1)语法

ps [options]
options有三种风格:
    1   UNIX options, which may be grouped and must be preceded by a dash.(如 -A -a)
    2   BSD options, which may be grouped and must not be used with a dash.(如 a g)
    3   GNU long options, which are preceded by two dashes.(如 --deselect)

(2)常用选项

a 显示包括所有终端中的进程
x 显示包括不链接终端的进程(不确定终端的用?表示)
u 显示进程所有者的信息
f 显示进程的父进程
o 属性…  显示定制的信息
-e 显示所有进程
-f 显示完整格式的进程信息
-F 显示完整格式的进行信息(更详细)
-H 以层级结构显示进程的相关信息

进程管理

(3)常用组合

1)ps aux

[root@linuxpao network-scripts]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  1.1 192240  5692 ?        Ss   08:27   0:10 /usr/lib/systemd/systemd --switched-root
root          2  0.0  0.0      0     0 ?        S    08:27   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:27   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   08:27   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    08:27   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    08:27   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        S    08:27   0:00 [rcuob/0]

......


USER:进程的发起者        
PID:进程号
%CPU:进程使用掉的CPU资源百分比
%MEM:进程占用的物理内存百分比    
VSZ:进程使用掉的虚拟内存大小,单位KB   
RSS:进程占用的固定内存大小,单位KB (常驻内存集)
TTY:进程在哪个终端运行      
STAT:进程目前的状态 
START:进程被触发的时间   
TIME:进程实际使用CPU时间 
COMMAND:触发此进程的命令

STAT的状态说明:
    <:该进程运行在高优先级上
    N:该进程运行在低优先级上
    L:该进程有页面锁定在内存中
    R:运行中
    s:该进程是控制进程
    l:该进程是多线程
    +:该进程运行在前台  
    O:代表正在运行
    S:休眠状态
    R:可运行,正等待运行
    Z:僵死
    T:停止

2)ps -ef

UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 08:27 ?        00:00:11 /usr/lib/systemd/systemd --switched-root --system --dese
root          2      0  0 08:27 ?        00:00:00 [kthreadd]
root          3      2  0 08:27 ?        00:00:00 [ksoftirqd/0]
root          5      2  0 08:27 ?        00:00:00 [kworker/0:0H]
root          7      2  0 08:27 ?        00:00:00 [migration/0]
root          8      2  0 08:27 ?        00:00:00 [rcu_bh]

......

UID:进程的发起者
PID:进程号
PPID:父进程号
C:进程生命周期中的CPU利用率
STIME:进程启动时的系统时间
TTY:进程是由哪个终端启动的
TIME:运行进程需要的累计CPU时间
CMD:触发此进程的命令

3)ps axo

o选项自定义的字段:
    pid ni pri pcpu psr stat comm tty ppid euser ruser %cpu %mem rtprio ...

[root@linuxpao network-scripts]# ps axo pid,comm,state,%cpu,pri,tty
   PID COMMAND         S %CPU PRI TT
     1 systemd         S  0.0  19 ?
     2 kthreadd        S  0.0  19 ?
     3 ksoftirqd/0     S  0.0  19 ?
     5 kworker/0:0H    S  0.0  39 ?
     7 migration/0     S  0.0 139 ?
     8 rcu_bh          S  0.0  19 ?
     9 rcuob/0         S  0.0  19 ?
    10 rcuob/1         S  0.0  19 ?
    11 rcuob/2         S  0.0  19 ?

    ......

4)ps -eFH

[root@linuxpao network-scripts]# ps -eFH
UID         PID   PPID  C    SZ   RSS PSR STIME TTY          TIME CMD
root          2      0  0     0     0   1 08:27 ?        00:00:00 [kthreadd]
root          3      2  0     0     0   0 08:27 ?        00:00:00   [ksoftirqd/0]
root          5      2  0     0     0   0 08:27 ?        00:00:00   [kworker/0:0H]
root          7      2  0     0     0   0 08:27 ?        00:00:00   [migration/0]
root          8      2  0     0     0   0 08:27 ?        00:00:00   [rcu_bh]
root          9      2  0     0     0   0 08:27 ?        00:00:00   [rcuob/0]
root         10      2  0     0     0   0 08:27 ?        00:00:00   [rcuob/1]
root         11      2  0     0     0   0 08:27 ?        00:00:00   [rcuob/2]
root         12      2  0     0     0   0 08:27 ?        00:00:00   [rcuob/3]

......

SZ:假如进程被换出,所需交换空间的大小
PSR:当前进程被分配给哪个处理器

5)ps -l

[root@linuxpao network-scripts]# ps -l
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0   9241   9237  0  80   0 - 29261 wait   pts/3    00:00:03 bash
0 R     0  15408   9241  0  80   0 - 34343 -      pts/3    00:00:00 ps

F:内核分配给进程的系统标记
S:进程的状态(O S T R Z )
NI:nice值,用来参与决定优先级
ADDR:进程的内存地址
WCHAN:进程休眠的内核函数的地址

2、top命令

实时显示系统进程的状态

(1)语法

top [option]

(2)选项

-d:后接秒数,即整个进程界面更新的秒数,默认3秒
-b:以批次的方式执行top,常与重定向连用
-n:与-b搭配,意义是,需要进行几次top的输出结果
-p:指定某个PID来进行查看检测而已

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

?:显示在top当中可以输入的按键命令
P:以占据的CPU百分比大小排序
M:以占据的内存百分比大小排序
N:以PID排序
T:以CPU累积占用时间排序
k:给予某个PID一个信号
r:给予某个PID重新制定一个nice值
q:退出top程序
s:修改延迟的时长
l:是否显示系统负载行(最顶行)
t:是否显示进程摘要信息及CPU负载状态(2、3行)
1:数字1,平均或单独显示CPU的负载状态

(3)top命令界面介绍

进程管理

top – 14:55:09  up  6:27,  3 users,  load average: 0.04, 0.03, 0.05

14:55:09:当前的系统时间    
up  6:27:系统启动到目前为止所经过的时间
3 users:当前系统中的用户数量
load average:系统在1,5,15分钟的平均负载,若高于1表示系统压力过大

Tasks: 428 total,   1 running, 427 sleeping,   0 stopped,   0 zombie

显示的是目前进程的总量与个别进程的状态,特别需要注意zombie状态

%Cpu(s):  0.5 us,  1.0 sy,  0.0 ni, 98.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

CPU的整体负载,可以使用?查看
    us :用户空间
    sy :内核空间
    ni :调整nice 时间
    id :空闲
    wa :等待IO 时间
    hi :硬中断
    si :软中断(模式切换)
    st :虚拟机偷走的时间

KiB Mem :   485280 total,     9348 free,   303228 used,   172704 buff/cache

物理内存的使用状态

KiB Swap:  2098172 total,  1881740 free,   216432 used.   117220 avail Mem

虚拟内存使用状态,若swap被大量使用,则表示物理内存不足了

PID  USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND

PID:每个进程的PID 
USER:进程的使用者      
PR:进程的优先级,值越小优先级越高  
NI:nice值    
VIRT:进程需要的虚拟内存大小,而非使用的虚拟内存    
RES:进程当前使用的内存大小,不包括swap    
SHR:进程与其他进程共享的内存大小,可以通过RES-SHR来计算进程所占用的物理内存大小
S:进程的状态 
%CPU:CPU的使用率 
%MEM:内存的使用率     
TIME+:CPU使用的时间累积 
COMMAND:触发进程的命令

3、vmstat命令

显示虚拟内存信息

(1)语法

vmstat [options] [delay [count]]

(2)用法解释

[root@linuxpao ~]# 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
 1  0 216408  10636     36 172748    2    5   100     8   49   61  0  1 99  0  0
 0  0 216408  10620     36 172748    0    0     0     0   64   96  0  0 100  0  0
 0  0 216408  10620     36 172748    0    0     0     0   53   73  0  0 100  0  0

procs
    r:等待运行的进程个数
    b:不可中断睡眠状态的进程的个数
memory
    swpd:swap使用量
    free:空闲的物理内存量
    buffer:用于buffer的内存总量
    cache:用于cache的内存总量
swap
    si:数据进入swap的速率(kb/s)
    so:数据离开swap的速率(kb/s)
io
    bi:从块设备读入数据到系统的速率(kb/s)
    bo:保存数据至块设备的速率(kb/s)
system
    in:中断速率,每秒被中断的次数
    cs:进程切换的速率
cpu
    us:用户运行程序占用CPU的百分比
    sy:用于运行内核占用的CPU百分比
    id:空闲CPU百分比
    wa:等待I/O花费的时间
    st:被虚拟机偷走的内存百分比

4、dstat命令

全能的系统信息统计工具,可以实时的监控cpu、磁盘、网络、IO、内存等使用情况

(1)语法

dstat [-afv] [options..] [delay [count]]

(2)选项

-c:显示CPU性能指标相关的统计数据
-d:显示disk相关的速率数据
-g:显示page相关的速率数据
-i:显示interrupt相关的统计数据
-l:显示load average相关的统计数据
-m:显示memory相关的统计数据
-n:显示网络收发数据的速率
-p:显示进程相关的统计数据
-r:io请求的速率
-s:显示swap的相关数据
-y:显示系统相关的数据,包括中断和进程切换
--top-cpu:显示最占用CPU的进程
--top-bio:显示最小号block io的进程
--top-io:最占io的进程
--top-mem:最占内存的进程
--ipc:显示进程间通信相关的速率数据
--raw:显示raw套接字的相关数据
-tcp:显示tcp套接字的相关数据
--udp:显示udp套接字的相关数据
--unix:显示unix sock接口相关的统计数据

(3)用法解释

[root@linuxpao network-scripts]# dstat 
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   1  99   0   0   0| 186k   14k|   0     0 |4188B   10k|  95   118 
  1   4  96   0   0   0|   0     0 |1510B  842B|   0     0 | 205   216 
  0   1 100   0   0   0|   0     0 |1510B  346B|   0     0 |  52    65 

total-cpu-usage
    CPU的使用率
dsk/total
    磁盘读写总数
net/total
    网络设备发送和接收的数据总数
paging
    系统的分页活动。分页指的是一种内存管理技术,用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散。
system
    显示系的中断(int)和上下文切换(csw),若此栏统计值较高则表示大量的进程造成拥塞

5、kill命令

向进程发送信号指令,如终止进程、重读文件等

(1)当前系统的信号名称

[root@linuxpao ~]# 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

(2)常用信号

1) SIGHUP:通知进程重读配置文件让新配置生效   
2) SIGINT:中断正在进行的进程,相当于 Ctrl+C
3) SIGQUIT:退出程序,相当于 Ctrl+\
9) SIGKILL:强行终止正在运行中的进程 
15) SIGTERM:安全终止正在运行的进程(默认)
18) SIGCONT:继续运行指定的进程(后台)
19) SIGSTOP:暂停进程(后台休眠),相当于 Ctrl+Z

原创文章,作者:pao,如若转载,请注明出处:http://www.178linux.com/45138