Skip to content

Linux进程与线程

Linux 进程与线程

简介

进程

在 Linux 中,进程是指正在运行的程序的实例。每个进程都有一个唯一的标识符(PID),并且可以包含代码、数据和文件描述符等信息。进程是操作系统的基本单位,它们在系统中相互独立地运行,并通过操作系统调度器进行管理和调度。

线程

在 Linux 中,线程是一种轻量级的执行流,是 cpu 调度的基本单位,可以共享同一个进程的地址空间、文件描述符和其他资源。线程是进程的一部分,它们共享相同的代码段和数据段,但拥有自己的栈空间。

进程的生命周期

可以分为五个阶段,分别是创建、就绪、运行、阻塞和终止。

  • 创建(Created)
  • 就绪(Ready)
  • 运行(Running)
  • 阻塞(Waiting)
  • 终止(Termination)

进程的生命周期是不断循环的,一个进程可能通过执行结束或其他方式终止,也可能重新创建新的进程。这样的循环使得操作系统能够同时处理和管理多个进程,实现多任务的并发执行。

进程状态

  • D(uninterruptible sleep): 进程处于无法中断的睡眠状态,通常是因为正在执行阻塞的 I/O 操作。
  • R(running or runnable): 进程正在运行或者已经就绪等待运行,它在运行队列中等待获取 CPU 时间片。
  • S(interruptible sleep): 进程正在等待某个事件完成,例如等待 I/O 操作或信号量。
  • T(stopped by job control signal): 进程被作业控制信号(例如 SIGSTOP)停止了,通常是由用户或调试器发出的停止信号。
  • t(stopped by debugger during the tracing): 进程被调试器在追踪期间停止了。
  • W(paging):在早期的 Linux 内核中,表示进程正在进行页面交换操作(已经在 2.6.xx 内核中不再使用)。
  • X(dead):表示进程已经终止,这个状态通常不应该被看到。
  • Z(defunct/"zombie"):表示进程已经终止,但是其父进程尚未回收其相关资源,因此进程变成了僵尸进程。

常用进程管理命令的使用

  • ps 进程列表快照。
  • top 交互式进程观测。
  • kill 结束进程。
  • fg 进程切换到前台。
  • bg 进程切换到后台。
  • ctrl+z 挂起进程。

ps 命令

  • unix 风格参数 ps -ef
  • bsd 风格参数 ps aux
  • gnu 风格参数 ps -o pid,pidlist
#获得所有进程列表
#UID        PID  PPID
#C STIME TTY
#TIME CMD
ps -ef
#获得所有进程列表,并提供更多可用数据
#USER       PID
#%CPU %MEM    VSZ   RSS TTY      STAT START
#TIME COMMAND
ps aux
#自定义输出指标
ps -o pid,ppid,psr,thcount,tid,cmd -M

Linux 进程运行情况

top 命令

  • 通过 top 命令,可以实时地查看系统的各项性能指标、进程状态和资源占用情况,以便更好地了解和监控系统的运行状态。
  • top 命令下,可以进行交互式操作,如切换排序方式、改变刷新间隔、显示不同的统计信息、发送信号给进程等。
  • 例如:可以通过按 P 键以 CPU 使用率排序进程列表,按 M 键以内存使用量排序进程列表通过单击 q 键,可以退出 top 命令。

kill 命令

结束进程,可以加上进程 ID 杀掉指定进程。

kill PID

jobs 命令

jobs 是一个 shell 内建命令,用于列出当前终端会话中正在运行或停止的进程。它会显示进程的 ID 和状态等。

fg 命令

fg 是一个 shell 内建命令,用于将一个停止的进程转移到前台运行。通过指定进程 ID,fg 命令将选择指定的进程并将其切换到前台运行。

ctrl+z 命令

ctrl+z 是一个组合键,用于将当前正在运行的前台进程暂停。当你按下 ctrl+z 后,该进程会被挂起并放在后台运行。

bg 命令

bg 是一个 shell 内建命令,用于将一个已被暂停的进程转到后台继续运行。通过指定进程 ID,bg 命令将选择指定的进程并将其放到后台继续执行。

总之,使用 jobs 命令可以查看当前会话中的进程列表和状态。当需要将一个停止的进程带到前台运行时,可以使用 fg 命令。如果想将一个暂停的进程转移到后台继续执行,可以使用 bg 命令。而 ctrl+z 键可以快速将当前正在运行的前台进程暂停,并返回 shell 提示符以便执行其他命令或操作。

总结

  • 进程的生命周期和状态。
  • 常用进程管理命令的使用。