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 提示符以便执行其他命令或操作。
总结
- 进程的生命周期和状态。
- 常用进程管理命令的使用。