Centos7系统进程管理

什么是进程

已启动的可执行程序的运行实例

 

进程的组成

  • 已分配内存的地址空间
  • 安全属性,包括所有权凭据和特权
  • 程序代码的一个或多个执行线程
  • 进程状态

 

程序

二进制文件,静态,如/bin/date,/usr/sbin/sshd

进程

程序运行的过程,动态,有生命周期及运行状态

 

Centos7系统进程管理

 

 fork:分支

zombie:僵尸(程序没有正常退出)

进程ID(PID),父进程ID(PPID)

所有进程都是第一个系统进程的后代

 

Centos5或6 PID为1的进程是  init

Centos7 PID为1的进程是 systemd

 

僵尸进程

专业忽悠语:

一个进程使用fork创建子进程,如果子进程退出,父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中,这种进程成为僵尸进程。

白话文:

父进程退出了wait,但子进程并没有结束,那么这些子进程的使用的资源,如内存等父进程释放或管理不了了,被称为僵尸进程。

僵尸进程正常情况下是kill不掉的,可以关机结束掉。

 

进程的属性

进程ID:PID,唯一的数值,用来区分进程

父进程ID:PPID

启动进程的用户ID(UID),所归属的组(GID)

进程的状态:运行R、休眠S、僵尸Z

进程执行的优先级

进程所连接的终端名

进程资源占用:所占用CPU,内存的大小

 

使用PS命令查看进程

常用参数:

a:显示跟当前终端关联的所有进程

u:居于用户的格式显示(U:显示某用户ID所有的进程)

x:显示所有进程,不以终端机来区分

[root@tzPC ~]# ps -aux | head
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128288  6936 ?        Ss   14:43   0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    14:43   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   14:43   0:00 [kworker/0:0H]
root          5  0.0  0.0      0     0 ?        S    14:43   0:00 [kworker/u256:0]
root          6  0.0  0.0      0     0 ?        S    14:43   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    14:43   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    14:43   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    14:43   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   14:43   0:00 [lru-add-drain]

 

注意:最后一列

[xx]使用方括号括起来的是内核进程,没有括起来的是用户进程。

各参数含义:

USER:启动这些进程的用户

PID:进程的ID

%CPU:占用CPU百分比

%MEM:占用内存百分比

VSZ:进程占用的虚拟内存大小,单位KB,比如预先分配10G内存及虚拟内存,实际占用1G及物理内存

RSS:进程占用物理内存的大小,单位KB

STAT:该程序目前的状态

 

Linux进程有5中状态

R :该程序目前正在运行;

S :该程序目前正在睡眠当中 (可以说是 idle 状态),但可被某些讯号(signal) 唤醒。

T :该程序停止了;

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

D  不可中断状态.  

5个基本状态后,还可以加一些字母,比如:Ss、R+,其含义如下:

 其他状态

<: 表示进程运行在高优先级上

N: 表示进程运行在低优先级上

L: 表示进程有页面锁定在内存中

s: 表示进程是控制进程

l: 表示进程是多线程的

+: 表示当前进程运行在前台

START:该 process 被触发启动的时间;

TIME :该 process 实际使用 CPU 运作的时间。如果为0:00表示还没有用到1秒钟

COMMAND:该程序的实际指令

 

以T状态为例:

新开一个终端vim a.txt

回原来的终端ps -aux | grep a.txt会发现为S+,为前台睡眠状态

回到vim a.txt终端,ctrl +z 停止

回到原来的终端会发现状态为T

 

ctrl-c 是发送 SIGINT 信号,终止一个进程

ctrl-z 是发送 SIGSTOP信号,挂起一个进程将作业放置到后台(暂停)

ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF代表输入完成或者注销

 

以D状态为例

新开一个终端tar -zcvf usr.tar.gz /usr 打包/usr

返回旧终端ps -aux | grep tar多执行几次会发现从S+变为R+最后成为D+

 

 另一种常见ps用法

[root@tzPC ~]# ps -ef | more
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 14:43 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 14:43 ?        00:00:00 [kthreadd]
root          4      2  0 14:43 ?        00:00:00 [kworker/0:0H]
root          5      2  0 14:43 ?        00:00:01 [kworker/u256:0]
root          6      2  0 14:43 ?        00:00:00 [ksoftirqd/0]
root          7      2  0 14:43 ?        00:00:00 [migration/0]
root          8      2  0 14:43 ?        00:00:00 [rcu_bh]
root          9      2  0 14:43 ?        00:00:01 [rcu_sched]
root         10      2  0 14:43 ?        00:00:00 [lru-add-drain]
root       1573    905  0 14:43 tty1     00:00:00 -bash
root       1597      1  0 14:43 ?        00:00:00 /usr/sbin/sshd -D
root       1702   1597  0 14:48 ?        00:00:00 sshd: root@pts/0
root       1706   1702  0 14:48 pts/0    00:00:00 -bash
root       1920   1597  0 15:24 ?        00:00:00 sshd: root@pts/1

-e 显示所有进程

-f 显示完整格式输出

UID: 启动这些进程的用户

PID: 进程的ID

PPID: 父进程的进程号

C: 进程生命周期中的CPU利用率

STIME: 进程启动时的系统时间

TTY: 表明进程在哪个终端上运行。如果显示  ?表示与终端无关,这种进程一般是内核进程。另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的0号进程,序号依次类推;

虚拟终端上的进程,如新开一个终端命令为vim a.txt,查看会发现pts/1,表示运行在虚拟终端上的1号进程,依次类推

TIME: 运行进程一共累计占用的CPU时间

CMD: 启动的程序名称

 

Centos7系统进程管理

上一篇:18.【原创】Ubuntu下切换apt的源为阿里源


下一篇:VMware 安装 Linux 系统(CentOS6)