Linux系统管理之进程管理

在正式的工作环境中,作为Linux系统管理员,监视系统进程的运行情况应该是日常的工作之一。那么,到底什么是进程呢?

什么是进程

进程是正在执行的一个程序或命令,每个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源,它由程序指令,和从文件、其它程序中读取的数据或系统用户的输入组成。操作系统会给进程分配一个 ID,称为 PID(进程 ID)。

进程的类型

  • 前台进程: 这些进程由终端会话初始化和控制。换句话说,需要有一个连接到系统中的用户来启动这样的进程;它们不是作为系统功能/服务的一部分自动启动
  • 后台进程: 这些进程没有连接到终端;它们不需要任何用户输入
  • 守护进程:这是后台进程的特殊类型,它们在系统启动时启动,并作为服务一直运行

在操作系统中,所有可以执行的程序与命令都会产生进程。只是有些程序和命令非常简单,如 ls 命令等,它们在执行完后就会结束,相应的进程也就会终结,所以我们很难捕捉到这些进程。但是还有一些程和命令,比如 httpd 进程,启动之后就会一直驻留在系统当中,我们把这样的进程称作常驻内存进程

某些进程会产生一些新的进程,我们把这些进程称作子进程,而把这个进程本身称作父进程。比如,我们必须正常登录到 Shell 环境中才能执行系统命令,而 Linux 的标准 Shell 是 bash。我们在 bash 当中执行了 ls 命令,那么 bash 就是父进程,而 ls 命令是在 bash 进程中产生的进程,所以 ls 进程是 bash 进程的子进程。也就是说,子进程是依赖父进程而产生的,如果父进程不存在,那么子进程也不存在了。

查看系统中所有的进程: ps aux

ps命令用于查看系统中的进程状态,格式为“ps [参数]”。

  • 查看系统中所有的进程

$ ps aux

参数 作用
-a 显示所有进程(包括其他用户的进程)
-u 用户以及其他详细信息
-x 显示没有控制终端的进程

image

如上图,我们来看看以上输出信息中各列的具体含义:

列名 含义
USER 该进程是由哪个用户产生的
PID 进程的 ID
%CPU 该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源
%MEM 该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源
VSZ 该进程占用虚拟内存的大小,单位为 KB
RSS 该进程占用实际物理内存的大小,单位为 KB
TTY 该进程是在哪个终端运行的。
STAT 进程状态。
START 该进程的启动时间。
TIME 该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND 产生此进程的命令名。

常见的STAT进程状态有以下几种:

  • D:不可被唤醒的睡眠状态,通常用于 I/O 情况
  • R:该进程正在运行
  • S:该进程处于睡眠状态,可被唤醒
  • T:停止状态,可能是在后台暂停或进程处于除错状态
  • W:内存交互状态(从 2.6 内核开始无效)
  • X:死掉的进程(应该不会出现)
  • Z:僵尸进程。进程已经中止,但是部分程序还在内存当中
  • <:高优先级(以下状态在 BSD 格式中出现)
  • N:低优先级
  • L:被锁入内存
  • s:包含子进程
  • l:多线程(小写 L)
  • +:位于后台

查看系统中所有的进程 ps -le

ps -le 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级。

参数 作用
-l 长格式显示更加详细的信息;
-e 显示所有进程;

image

如上图,我们来看看以上输出信息中各列的具体含义:

列名 含义
F 进程标志,说明进程的权限,常见的标志有两个:1 进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
S 进程状态。具体的状态和ps aux命令中的 STAT 状态一致;
UID 运行此进程的用户的 ID;
PID 进程的 ID;
PPID 父进程的 ID;
C 该进程的 CPU 使用率,单位是百分比;
PRI 进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;
NI 进程的优先级,数值越小,该进程越早被执行;
ADDR 该进程在内存的哪个位置;
SZ 该进程占用多大内存;
WCHAN 该进程是否运行。"-"代表正在运行;
TTY 该进程由哪个终端产生;
TIME 该进程占用 CPU 的运算时间,注意不是系统时间;
CMD 产生此进程的命令名;

删除进程 kill

kill可将指定的信息送至程序,默认的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。kill命令格式如下:

$ kill [信号] PID

信号编号 信号名 含义
0 EXIT 程序退出时收到该信息。
1 HUP 挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。
2 INT 表示结束进程,但并不是强制性的,相当于用键盘输入 [ctrl]-c 来中断一个程序的进行
3 QUIT 退出
9 KILL 杀死进程,即强制结束进程
15 TERM 正常结束进程,命令的默认信号
19 SIGSTOP 相当于用键盘输入 [ctrl]-z 来暂停一个程序的进行

我们用的最多的信号编号是1,9,15。

最后我们来看看所谓的“僵尸进程”,僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。僵尸进程会对主机的稳定性产生影响,所以,在产生僵尸进程后,一定要对产生僵尸进程的软件进行优化,避免一直产生僵尸进程;对于已经产生的僵尸进程,可以在查找出来之后强制中止。

image

posted @ 2020-08-31 10:51  九派Linux  阅读(152)  评论(0编辑  收藏  举报