《Linux系统编程篇》Linux进程的状态——基础篇

“千里之行,始于足下。” —— 老子《道德经》

引言

《Linux系统编程篇》——基础篇首页传送门

上节我们知道了,什么是进程,什么是进程标识符(PID),以及程序的存储结构(运行时,存储时),本节我们继续将探索,Linux的进程状态。

在 Linux 中,进程是一个正在运行的程序实例。理解进程状态可以帮助我们更好地分析和管理系统资源,提高对系统的调试和排查效率。

查看进程状态的命令

Linux 提供了多种命令来查看和管理进程状态:

  1. ps 命令
  2. top 命令

当然并不只是这两个命令。

我们以top命令为例,当我们使用top命令的时候,会有很多的信息,上节已经介绍的参数这里不再阐述,top命令有一个地方是可以看到进程的状态的,敲下命令之后,状态标识符位于 S 列,可以看到每个进程的当前状态。

在这里插入图片描述

Linux进程的状态

Linux 将正在运行的程序称为“进程”。每个进程都有一个独立的空间,用于存储代码、数据和程序执行状态。在 Linux 系统中,进程的状态由内核管理,用户可以通过命令或系统文件获取信息。

常见进程状态

笔者这里列举一些常见的进程状态,如果遇到新的状态,我们后续会引入并介绍。

1、运行状态(Running)

  • 标识符:R
    表示进程正在使用 CPU 资源执行代码。
    处于运行状态的进程会在多个 CPU 上进行调度,在单 CPU 系统中,通常只有一个进程处于运行状态。

2、睡眠状态(Sleeping)

  • 标识符:S D
    睡眠状态的进程可以分为以下两种:
    • 可中断睡眠(S, Sleeping):进程正在等待某个事件(如 I/O 操作)完成。这个状态可以被信号中断,进程会被唤醒并重新进入运行状态。
    • 不可中断睡眠(D, Uninterruptible Sleeping):进程等待一些无法中断的事件完成,如等待硬件响应。这种状态无法通过信号唤醒,一般是由于 I/O 操作。

3、停止状态(Stopped)

  • 标识符:T
    进程被暂停执行,通常是因为收到了 SIGSTOP 信号(手动暂停进程)或 SIGTSTP 信号(通常是用户按下 Ctrl+Z)。
    停止状态的进程可以被继续执行,前提是收到 SIGCONT 信号。

4、僵尸状态(Zombie)

  • 标识符:Z
    僵尸状态的进程已经终止,但其父进程尚未读取其退出状态(即未调用 wait() 函数)。这种状态的进程不再占用 CPU 和内存资源,但仍然保留在进程表中。
    僵尸进程通常不会对系统性能造成太大影响,但大量僵尸进程可能会导致进程表被填满,影响新进程的创建。

5、新建状态(New)

  • 标识符:无
    当一个进程刚刚创建时,它处于新建状态,但尚未进入调度程序的运行队列。在 Linux 中,用户通常无法直接看到这个状态,因为它会立即进入等待或运行状态。

6、结束状态(Exited)

  • 标识符:无
    结束状态的进程已彻底从系统中移除。该状态短暂存在于系统调用过程中,用户通常无法看到。

进程状态的管理

终止进程:可以使用 kill 命令向进程发送信号。例如,kill -9 强制终止某个进程。

唤醒进程:对可中断睡眠的进程,可以通过发送信号唤醒,如 kill -CONT 。

暂停进程:通过 kill -STOP 暂停进程,适合需要暂时停止某些资源密集型任务的情况。


结论

Linux 进程的状态为我们提供了丰富的信息,理解这些状态是掌握系统性能分析和调试的基础。通过掌握 ps、top等命令(当然还有其他命令,htop 命令和 /proc 文件系统),可以更高效地监控系统进程,合理地管理和优化系统资源。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chunxin@Jiaju

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值