红帽linux之进程监控

简介: 进程是已启动的可执行程序的运行中实例

列出进程


进程的定义: 进程(process)是已启动的可执行程序的运行中实例,由以下部分组成:

1. 已分配的内存地址空间

2. 安全属性,包括所有权凭据与特权。

3. 程序代码中一个或多个的执行线程(thread)

4. 进程状态



进程的环境包括:


1. 本地与全局变量

2. 当前调度上下文(context)

3. 已分配的系统资源,如文件描述符与网络端口。

现有的父进程复制自己的内存地址空间(fork)来创建一个新的子进程结构。

每个新进程分配有一个唯一进程ID(PID),满足跟踪和安全性。

PID和父进程ID(PPID)是新进程环境的元素。

任何进程可创建子进程,所有进程都是第一个系统进程创建的。

在RHEL 8/7上,第一个系统进程是systemd



通过fork进程,子进程继承安全性⾝份、过去和当前的文件描述符、端口和资源特

权、 环境变量,以及程序代码。

随后,子进程可能执行(exec)其自己的程序代码。

通常,父进程在子进程运行期间处于睡眠状态(sleep),设置在子进程完成时发出

信号的请求(wait)。

在退出时,子进程已经关闭或丢弃了其资源和环境。

唯一剩下的资源称为僵停(zombie),是进程表中的一个条目(entry)。

父进程在子进程退出时收到信号被唤醒(wake),清理进程表的zombie条目,释放

子进程的最后一个资源。

然后,父进程继续执行自己的程序代码。



描述进程状态:


多任务操作系统中,每个CPU(或CPU核心)同一时间片处理一个进程,

进程运行时具有不同状态。



Linux进程状态说明:



1. R(Running or Runnable,运行):

正在运行或在运行队列中等待。

2. D(Uninterruptible Sleeping/Disk Sleeping,不可中断睡眠):

不可中断睡眠,深度睡眠,收到信号不唤醒和不可运行,通常在磁盘写入时发

生。

3. Z(Zombie,僵死):

子进程终止退出,父进程仍在运行,但父进程未等待子进程的退出状态,即父进

程不调用wait()

或waitpid()系统调用,子进程进入僵死状态。

4. X(Dead,死亡):

父进程清理子进程的剩余状态,彻底释放子进程资源,该状态在进程列表中不出

现。

5. T(Traced or Stopped,停止):

进程收到SIGSTOP、SIGTSTP、SIGTTOU等信号后停止运行。



* 注意:


1. Linux进程状态后缀表示:

a. <:优先级高的进程

b. N:优先级低的进程

c. L:有些页被锁进内存

d. s:具有子进程的父进程

e. l:具有多线程的进程

f. +:位于后台的进程组

2. $ man ps:查看ps帮助文档

3. 若子进程的父进程先结束,那么该进程就不会变成僵尸进程。

因为每个进程结束时,系统都会扫描当前系统中所运行的所有进程,查看是否有

哪个进程是刚结束的

这个进程的子进程,如果存在子进程,就由1号进程(init或systemd进程)接

管,成为其父进程,

从而保证每个进程都会有一个父进程,该子进程称为“孤儿进程”。

4. init或systemd会自动wait其子进程,因此被init或systemd接管的所有进程都

不会变成僵尸进程。

5. 产生僵尸进程的原因:程序代码逻辑问题、对程序的非常规操作等。

6. 处理僵尸进程:

a. 僵尸进程在进程表中常表现为"<defunct>"状态

b. 杀死该僵尸进程的父进程可将其清除,若依然无效可重启操作系统。



显示当前会话进程:

ps命令用于列出当前会话进程,包括:


1. 运行进程的用户UID

2. 进程PID

3. 进程使用的CPU百分比

4. 进程的物理内存使用百分比(不包含Swap空间)

5. 进程的STDOUT位置,称为控制终端。

6. 当前进程状态



其中ps -aux(UNIX POSIX格式)不同于 ps aux(BSD格式)

$ ps aux:查看系统上运行的所有进程,-a选项为显示当前终端的进程,-u选项显示运行进程的用户。


$ ps aux --sort [+|-]%cpu:正序或反序排列CPU使用百分比

$ ps aux --sort [+|-]%mem:正序或反序排列物理内存使用百分比

$ ps aux --sort [+|-]rss:正序或反序排列实际使用的物理内存

$ ps auxm:查看系统上运行的所有进程,并在每个进程下显示该进程的所有线程。

$ ps lax:长列表格式输出系统上运行的所有进程

$ ps -ef:全格式输出系统上运行的所有进程

$ ps -efL:全格式输出系统上运行的所有进程,并显示给个进程的线程数

(NLWP)。

$ ps -L -C <process_name>:查看指定进程的线程信息

$ ps -L [-p|p|-q|q] <pid>:查看指定进程的线程信息



[root@VM-0-3-centos ~]# ps -aux

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.2 125616  4088 ?        Ss   Oct09  11:29 /usr/lib/systemd/systemd --switch

root         2  0.0  0.0      0     0 ?        S    Oct09   0:00 [kthreadd]

root         4  0.0  0.0      0     0 ?        S<   Oct09   0:00 [kworker/0:0H]

root         6  0.0  0.0      0     0 ?        S    Oct09   1:14 [ksoftirqd/0]



[root@VM-0-3-centos ~]# ps lax

F   UID   PID  PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND

4     0     1     0  20   0 125616  4088 ep_pol Ss   ?         11:29 /usr/lib/systemd/systemd --sw

1     0     2     0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]

1     0     4     2   0 -20      0     0 worker S<   ?          0:00 [kworker/0:0H]

1     0     6     2  20   0      0     0 smpboo S    ?          1:14 [ksoftirqd/0]




[root@VM-0-3-centos ~]# ps -ef

UID        PID  PPID  C STIME TTY          TIME CMD

root         1     0  0 Oct09 ?        00:11:29 /usr/lib/systemd/systemd --switched-root --system

root         2     0  0 Oct09 ?        00:00:00 [kthreadd]

root         4     2  0 Oct09 ?        00:00:00 [kworker/0:0H]

root         6     2  0 Oct09 ?        00:01:14 [ksoftirqd/0]

root         7     2  0 Oct09 ?        00:00:00 [migration/0]

root         8     2  0 Oct09 ?        00:00:00 [rcu_bh]

root         9     2  0 Oct09 ?        00:03:37 [rcu_sched]




方括号中的进程(通常位于列表顶部)为调度的内核线程。

僵停列为 exiting 或 <defunct>。

ps命令的输出显示一次。

使用top命令来获得动态更新的进程显示。

pstree命令可以采用树形显示格式,以便查看父进程和子进程之间的关系。

相关文章
|
1月前
|
资源调度 Linux 调度
Linux c/c++之进程基础
这篇文章主要介绍了Linux下C/C++进程的基本概念、组成、模式、运行和状态,以及如何使用系统调用创建和管理进程。
38 0
|
21天前
|
缓存 监控 Linux
linux进程管理万字详解!!!
本文档介绍了Linux系统中进程管理、系统负载监控、内存监控和磁盘监控的基本概念和常用命令。主要内容包括: 1. **进程管理**: - **进程介绍**:程序与进程的关系、进程的生命周期、查看进程号和父进程号的方法。 - **进程监控命令**:`ps`、`pstree`、`pidof`、`top`、`htop`、`lsof`等命令的使用方法和案例。 - **进程管理命令**:控制信号、`kill`、`pkill`、`killall`、前台和后台运行、`screen`、`nohup`等命令的使用方法和案例。
74 4
linux进程管理万字详解!!!
|
11天前
|
存储 运维 监控
深入Linux基础:文件系统与进程管理详解
深入Linux基础:文件系统与进程管理详解
53 8
|
8天前
|
Linux
如何在 Linux 系统中查看进程占用的内存?
如何在 Linux 系统中查看进程占用的内存?
|
20天前
|
算法 Linux 定位技术
Linux内核中的进程调度算法解析####
【10月更文挑战第29天】 本文深入剖析了Linux操作系统的心脏——内核中至关重要的组成部分之一,即进程调度机制。不同于传统的摘要概述,我们将通过一段引人入胜的故事线来揭开进程调度算法的神秘面纱,展现其背后的精妙设计与复杂逻辑,让读者仿佛跟随一位虚拟的“进程侦探”,一步步探索Linux如何高效、公平地管理众多进程,确保系统资源的最优分配与利用。 ####
57 4
|
21天前
|
缓存 负载均衡 算法
Linux内核中的进程调度算法解析####
本文深入探讨了Linux操作系统核心组件之一——进程调度器,着重分析了其采用的CFS(完全公平调度器)算法。不同于传统摘要对研究背景、方法、结果和结论的概述,本文摘要将直接揭示CFS算法的核心优势及其在现代多核处理器环境下如何实现高效、公平的资源分配,同时简要提及该算法如何优化系统响应时间和吞吐量,为读者快速构建对Linux进程调度机制的认知框架。 ####
|
22天前
|
消息中间件 存储 Linux
|
29天前
|
运维 Linux
Linux查找占用的端口,并杀死进程的简单方法
通过上述步骤和命令,您能够迅速识别并根据实际情况管理Linux系统中占用特定端口的进程。为了获得更全面的服务器管理技巧和解决方案,提供了丰富的资源和专业服务,是您提升运维技能的理想选择。
37 1
|
1月前
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
【10月更文挑战第9天】本文将深入浅出地介绍Linux系统中的进程管理机制,包括进程的概念、状态、调度以及如何在Linux环境下进行进程控制。我们将通过直观的语言和生动的比喻,让读者轻松掌握这一核心概念。文章不仅适合初学者构建基础,也能帮助有经验的用户加深对进程管理的理解。
26 1
|
1月前
|
消息中间件 Linux API
Linux c/c++之IPC进程间通信
这篇文章详细介绍了Linux下C/C++进程间通信(IPC)的三种主要技术:共享内存、消息队列和信号量,包括它们的编程模型、API函数原型、优势与缺点,并通过示例代码展示了它们的创建、使用和管理方法。
32 0
Linux c/c++之IPC进程间通信
下一篇
无影云桌面