乐趣区

关于linux: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 显示没有管制终端的过程

如上图,咱们来看看以上输入信息中各列的具体含意:

列名 含意
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 显示所有过程;

如上图,咱们来看看以上输入信息中各列的具体含意:

列名 含意
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。

最初咱们来看看所谓的“僵尸过程”,僵尸过程是当子过程比父过程先完结,而父过程又没有回收子过程,开释子过程占用的资源,此时子过程将成为一个僵尸过程。僵尸过程会对主机的稳定性产生影响,所以,在产生僵尸过程后,肯定要对产生僵尸过程的软件进行优化,防止始终产生僵尸过程;对于曾经产生的僵尸过程,能够在查找进去之后强制停止。

退出移动版