linux进程管理

简介: linux进程管理

进程管理

进程就是运行中的程序,一个运行着的程序,可能有多个进程。 比如 LinuxSir.Org 所用的 WWW

服务器是 apache 服务器,当管理员启动服务后,可能会有好多人来访问,也就是说许多用户来同时请

httpd 服务,apache 服务器将会创建有多个 httpd 进程来对其进行服务。

进程分类

进程一般分为交互进程、批处理进程和守护进程三类。

值得一提的是守护进程总是活跃的,一般是后台运行,守护进程一般是由系统在开机时通过脚本自

动激活启动或超级管理用户 root 来启动。比如在 Fedora Redhat 中,我们可以定义 httpd 服务器的启

动脚本的运行级别,此文件位于/etc/init.d 目录下,文件名是 httpd/etc/init.d/httpd 就是 httpd 服务器

的守护程序,当把它的运行级别设置为 3 5 时,当系统启动时,它会跟着启动。

[root@localhost ~]# chkconfig --level 35 httpd on

由于守护进程是一直运行着的,所以它所处的状态是等待请求处理任务。比如,我们是不是访问

LinuxSir.Org LinuxSir.Org httpd 服务器都在运行,等待着用户来访问,也就是等待着任务处理。


进程的属性

进程 IDPID):是唯一的数值,用来区分进程;

父进程和父进程的 IDPPID)

启动进程的用户 IDUID)和所归属的组(GID);

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

进程执行的优先级;

进程所连接的终端名;

进程资源占用:比如占用资源大小(内存、CPU 占用量);

父进程和子进程

他们的关系是管理和被管理的关系,当父进程终止时,子进程也随之而终止。但子进程终止,父进

程并不一定终止。比如 httpd 服务器运行时,我们可以杀掉其子进程,父进程并不会因为子进程的终止

而终止。

在进程管理中,当我们发现占用资源过多,或无法控制的进程时,应该杀死它,以保护系统的稳定

安全运行

进程管理命令

ps

ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

ps 的参数说明:

ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
我们常用的选项是组合是 aux 或 lax,还有参数 f 的应用;
ps aux 或 lax 输出的解释;

image.png

USER 表示启动进程用户。PID 表示进程标志号。%CPU 表示运行该进程占用 CPU 的时间与该进程总的运行时间的比例。%MEM 表示该进程占用内存和总内存的比例。VSZ 表示占用的虚拟内存大小,以 KB 为单位。RSS 为进程占用的物理内存值,以 KB 为单位。TTY 表示该进程建立时所对应的终端,"?"表示该进程不占用终端。STAT 表示进程的运行状态,包括以下几种代码:D,不可中断的睡眠;R,就绪(在可运行队列中);S,睡眠;T,被跟踪或停止;Z,终止(僵死)的进程,Z 存在,但暂时无法消除;W,没有足够的内存分页可分配;<高优先序的进程;N,低优先序的进程;L,有内存分页分配并锁在内存体内(实时系统或 I/O)。START 为进程开始时间。TIME 为执行的时间。COMMAND 是对应的命令名。


ps 应用举例:
实例一:ps aux 最常用

[root@localhost ~]# ps -aux |more

可以用 | 管道和 more 连接起来分页查看;

[root@localhost ~]# ps aux > ps001.txt

[root@localhost ~]# more ps001.txt

这里是把所有进程显示出来,并输出到 ps001.txt 文件,然后再通过 more 来分页查看;

实例二:和 grep 结合,提取指定程序的进程;

[root@localhost ~]# ps aux |grep httpd

root 4187 0.0 1.3 24236 10272 ? Ss 11:55 0:00 /usr/sbin/httpd

apache 4189 0.0 0.6 24368 4940 ? S 11:55 0:00 /usr/sbin/httpd


实例三:父进和子进程的关系友好判断的例子:这里用到了 f 参数;父与子关系一目了然;

[root@192-168-189-131 ~]# ps auxf

root      3609  0.0  0.0   2364    80 ?        Ss   Jun18   0:00      |   \_ runsv grafana

root      3610  0.0  0.0   2508   288 ?        S    Jun18   0:00      |       \_ svlogd -tt /var/log/gitlab/grafana

992       3611  0.0  0.7 1524792 29412 ?       Ssl  Jun18  24:49      |       \_ /opt/gitlab/embedded/bin/grafana-server -config /

root      3876  0.0  0.0   5720   272 ?        S    Jun18   0:00      \_ /bin/bash /opt/gitlab/bin/gitlab-ctl tail

root      3877  0.0  0.0  96932  1924 ?        S    Jun18   0:01          \_ /opt/gitlab/embedded/bin/ruby /opt/gitlab/embedded/bi

root      3879  0.0  0.0   2600   192 ?        S    Jun18   0:00              \_ sh -c find -L /var/log/gitlab -type f -not -path  

root      3882  0.0  0.0   4552    76 ?        S    Jun18   0:00                  \_ xargs tail --follow=name --retry

root      3883  0.0  0.0   4288   196 ?        S    Jun18   4:23                      \_ tail --follow=name --retry /var/log/gitla

例四:找出消耗内存最多的前 10 名进程

# ps -auxf | sort -nr -k 4 | head -10

例五:找出使用 CPU 最多的前 10 名进程

# ps -auxf | sort -nr -k 3 | head -10


pstree

功能:pstree 命令列出当前的进程,以及它们的树状结构。

格式:pstree [选项] [pid|user]

主要选项如下:

-a:显示执行程序的命令与完整参数。
-c:取消同名程序,合并显示。
-h:对输出结果进行处理,高亮显示正在执行的程序。
-l:长格式显示。
-n:以 PID 大小排序。
-p:显示 PID。 -u:显示 UID 信息。
-G:使用 VT100 终端编码显示。
-U:使用 UTF-8(Unicode)编码显示。
说明:使用 ps 命令得到的数据精确,但数据庞大,这一点对掌握系统整体概况来说是不容易的。pstree
正好可以弥补这个缺憾。它能将当前的执行程序以树状结构显示。pstree 支持指定特定程序(PID)
或使用者(USER)作为显示的起始。

应用实例如下:

进程启动的时候可能会产生自己的一个子进程。运行 pstree 命令就可以很容易地看到这些信息。以超

级用户权限运行 应用实例如下。

进程启动的时候可能会产生自己的一个子进程。运行 pstree 命令就可以很容易地看到这些信息。以超

级用户权限运行 pstree

如果出现一下问题:

-bash: pstree: command not found

需要安装一下:

[root@192-168-189-131 ~]# yum -y install psmisc

image.png

top

top 命令用来显示系统当前的进程状况。

格式:top [选项]

主要选项如下

d:指定更新的间隔,以秒计算。
q:没有任何延迟的更新。如果使用者有超级用户,则 top 命令将会以最高的优先序执行。
c:显示进程完整的路径与名称。
S:累积模式,会将已完成或消失的子进程的 CPU 时间累积起来。
s:安全模式。
i:不显示任何闲置(Idle)或无用(Zombie)的进程。
n:显示更新的次数,完成后将会退出 top说明:top 命令和 ps 命令的基本作用是相同的,都显示系统当前的进程状况。但是 top 是一个动态显
示过程,即可以通过用户按键来不断刷新当前状态。这里结合下图来说明它给出的信息。

image.png

第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均负载。


第二行显示的是 Tasks: 114 total 进程总数、2 running 正在运行的进程数、110 sleeping 睡眠的进程数、0 stopped 停止的进程数、2 zombie 僵尸进程数


第三行显示的是目前 CPU 的使用情况,Cpu(s): 0.3% us 用户空间占用 CPU 百分比、1.0% sy 内核空间占用 CPU 百分比、0.0% ni 用户进程空间内改变过优先级的进程占用 CPU 百分比、98.7% id 空 闲 CPU 百分比、0.0% wa 等待输入输出的 CPU 时间百分比、0.0% hi0.0% si


第四行显示物理内存的使用情况,Mem: 191272k total 物理内存总量、173656k used 使用的物理内存总量、17616k free 空闲内存总量、22052k buffers 用作内核缓存的内存量


第五行显示交换分区使用情况,Swap: 192772k total 交换区总量、0k used 使用的交换区总量、192772k free 空闲交换区总量、123988k cached 缓冲的交换区总量、内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。


第六行显示的项目最多,下面列出了详细解释。

PIDProcess ID):进程标志号,是非零正整数。USER:进程所有者的用户名。PR:进程的优先级别。

NI:进程的优先级别数值。VIRT:进程占用的虚拟内存值。RES:进程占用的物理内存值。SHR:进程

使用的共享内存值。STAT:进程的状态,其中 S 表示休眠,R 表示正在运行,Z 表示僵死状态,N

示该进程优先值是负数。%CPU:该进程占用的 CPU 使用率。%MEM:该进程占用的物理内存和总内存的百分比。TIME:该进程启动后占用的总的 CPU 时间。COMMAND:进程启动的启动命令名称,如

果这一行显示不下,进程会有一个完整的命令行。

top 命令使用过程中,还可以使用一些交互的命令来完成其他参数的功能。这些命令是通过快捷键启

动的。

<空格>:立刻刷新。

A 分类显示系统不同资源的使用大户。有助于快速识别系统中资源消耗多的任务。

f 添加删除所要显示栏位.

o 调整所要显示栏位的顺序.

r 调整一个正在运行的进程 Nice .

k 结束一个正在运行的进程.

z 彩色/黑白显示开关

P:根据 CPU 使用大小进行排序。

T:根据时间、累计时间排序。

q:退出 top 命令。

m:切换显示内存信息。

t:切换显示进程和 CPU 状态信息。

c:切换显示命令名称和完整命令行。

M:根据使用内存大小进行排序。

W:将当前设置写入~/.toprc 文件中。这是写 top 配置文件的推荐方法。

可以看到,top 命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要。但是,

它的缺点是会消耗很多系统资源

目录
相关文章
|
30天前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
67 1
|
3月前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
51 0
|
19天前
|
存储 监控 Linux
嵌入式Linux系统编程 — 5.3 times、clock函数获取进程时间
在嵌入式Linux系统编程中,`times`和 `clock`函数是获取进程时间的两个重要工具。`times`函数提供了更详细的进程和子进程时间信息,而 `clock`函数则提供了更简单的处理器时间获取方法。根据具体需求选择合适的函数,可以更有效地进行性能分析和资源管理。通过本文的介绍,希望能帮助您更好地理解和使用这两个函数,提高嵌入式系统编程的效率和效果。
84 13
|
26天前
|
SQL 运维 监控
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
南大通用GBase 8a MPP Cluster Linux端SQL进程监控工具
|
1月前
|
运维 监控 Linux
Linux操作系统的守护进程与服务管理深度剖析####
本文作为一篇技术性文章,旨在深入探讨Linux操作系统中守护进程与服务管理的机制、工具及实践策略。不同于传统的摘要概述,本文将以“守护进程的生命周期”为核心线索,串联起Linux服务管理的各个方面,从守护进程的定义与特性出发,逐步深入到Systemd的工作原理、服务单元文件编写、服务状态管理以及故障排查技巧,为读者呈现一幅Linux服务管理的全景图。 ####
|
2月前
|
缓存 监控 Linux
linux进程管理万字详解!!!
本文档介绍了Linux系统中进程管理、系统负载监控、内存监控和磁盘监控的基本概念和常用命令。主要内容包括: 1. **进程管理**: - **进程介绍**:程序与进程的关系、进程的生命周期、查看进程号和父进程号的方法。 - **进程监控命令**:`ps`、`pstree`、`pidof`、`top`、`htop`、`lsof`等命令的使用方法和案例。 - **进程管理命令**:控制信号、`kill`、`pkill`、`killall`、前台和后台运行、`screen`、`nohup`等命令的使用方法和案例。
153 4
linux进程管理万字详解!!!
|
2月前
|
缓存 算法 Linux
Linux内核的心脏:深入理解进程调度器
本文探讨了Linux操作系统中至关重要的组成部分——进程调度器。通过分析其工作原理、调度算法以及在不同场景下的表现,揭示它是如何高效管理CPU资源,确保系统响应性和公平性的。本文旨在为读者提供一个清晰的视图,了解在多任务环境下,Linux是如何智能地分配处理器时间给各个进程的。
|
2月前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
90 8
|
2月前
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
167 1
|
2月前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?