Linux进程管理

一、Linux程序与进程

1、程序,进程,线程的概念

  • 程序:是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务,是静态的;

  • 进程:是运行着的程序,是操作系统执行的基本单位,是程序运行的过程, 是动态的,是有生命周期及运行状态的。是操作系统分配内存、CPU时间片等资源的基本单位。

  • 线程:是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。

2、程序和进程的区别

  • 程序是静态的,它只是一组指令的集合,不具有任何的运行意义。而进程是程序运行的动态过程;

  • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程;

  • 进程还具有并发性和交往性,而程序却是封闭的。

3、进程和线程的区别

  • 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发拥有多个线程,而一个线程同时只能被一个进程所拥有;

  • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。

二、Linux进程基础(生命周期)

1、进程生命周期

  • 父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID(PID),PID和父进程ID(PPID)是子进程环境的元素,任何进程都可以创建子进程。

  • 所有进程都是第一个系统进程的后代:在centos6中,第一个系统进程是init,而在centos7中,第一个系统进程是systemd。

2、父子进程的关系

  • 子进程由父进程产生,在linux系统中,使用系统调用fork创建进程。fork复制的内容包括父进程的数据和堆栈段以及父进程的进程环境子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。

  • 运行过程:子进程运行时父进程休眠。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境后,剩余释放不掉的资源称之为僵尸进程。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

三、进程查看命令

1. pstree:可视化进程树关系

pstree命令能直观展示进程间的父子关系,清晰呈现谁创建了谁。

基本用法

pstree [选项]

常用选项

  • -A:用 ASCII 码字符连接进程树

  • -U:用 UTF8 字符连接进程树(部分终端可能兼容问题)

  • -p:同时显示每个进程的 PID(推荐常用)

  • -u:同时显示进程所属账号名称

2. ps:静态查看进程快照

ps命令用于显示系统当前进程的瞬间运行状态,是最常用的进程查看工具之一。

基本用法

bash

ps [选项]

核心选项组合

  • ps aux:显示所有进程的详细信息(最常用)

  • ps -efj:查看进程父子关系

  • ps -elf:长格式显示所有进程的完整信息

ps aux输出解析

字段含义
USER进程所有者
PID进程唯一 ID
%CPU进程占用 CPU 百分比
%MEM进程占用内存百分比
VSZ虚拟内存大小
RSS物理内存大小
TTY进程所在终端
STAT进程状态
START启动时间
TIME累计 CPU 时间
COMMAND启动命令
进程状态(STAT)详解

进程状态是理解进程行为的关键,ps命令输出的STAT列包含丰富信息:

状态码含义说明
R运行中进程正在运行或在运行队列中
S可中断睡眠等待事件(如 I/O),可被信号唤醒
D不可中断睡眠等待硬件 I/O,不能被信号唤醒
T已停止被信号暂停或正在调试
Z僵尸进程进程已终止,父进程未回收资源
I空闲内核线程空闲状态
<高优先级nice 值为负,优先级高
N低优先级nice 值为正,优先级低
s会话领导者如 bash 终端进程
l多线程如 nginx 等多线程程序
+前台进程属于前台进程组

常见状态组合

  • Ss:会话领导者处于可中断睡眠(如 bash)
  • R+:前台运行的进程(如 top 命令)
  • Z:僵尸进程(需要处理的异常状态)

3. pgrep:精准查找进程 ID

pgrep通过程序名匹配进程,常与kill配合使用。

基本用法

pgrep [选项] 进程名

常用选项

  • -l:同时显示进程名和 PID
  • -o:显示匹配进程中 PID 最小的
  • -n:显示匹配进程中 PID 最大的

示例

pgrep -l nginx  # 查找nginx进程并显示PID和名称

4. top/htop:动态监控进程

  • top:系统自带的动态进程监控工具

  • htop:top 的增强版,提供更友好的交互界面

安装 htop

yum install epel-release -y
yum install htop -y

常用操作

  • -d 5:每隔 5 秒更新一次
  • -p 1234:监控指定 PID 的进程
  • -u root:监控指定用户的进程
  • 按键P:按 CPU 使用率排序
  • 按键M:按内存使用率排序
  • 按键q:退出监控

四、进程管理命令

1. kill:发送信号终止进程

kill命令通过发送信号来控制进程,默认发送SIGTERM(15)信号请求进程正常终止。

基本用法

kill [选项] PID

关键选项

  • -9:发送SIGKILL信号,强制终止进程(无法被忽略)
  • -s:发送指定的信号
  • -0:检测进程是否存在(不发送信号)

常用:

信号名称作用
SIGHUP终端挂起或者控制进程结束时发出的信号,通常用于通知守护进程重新读取配置文件等。
SIGINT键盘中断信号,通常由用户按下 Ctrl+C 产生,用于终止正在运行的程序。
SIGQUIT键盘退出信号,通常由用户按下 Ctrl+\ 产生,用于使程序异常退出并产生核心转储文件(如果可能)。
SIGILL非法指令信号,表示程序执行了一条非法的机器指令。
SIGTRAP跟踪陷阱信号,用于调试程序,通常由断点触发。
SIGABRT异常终止信号,通常由程序内部的 abort 函数调用产生。
SIGBUS总线错误信号,通常表示访问内存时出现了总线错误。
SIGFPE浮点运算异常信号,例如除以零等浮点运算错误。
SIGKILL强制终止信号,无法被捕获或忽略,用于立即终止进程。
SIGUSR1用户自定义信号 1,留给用户程序自定义用途。
SIGSEGV内存访问越界信号,通常表示程序尝试访问非法的内存地址。
SIGUSR2用户自定义信号 2,留给用户程序自定义用途。
SIGPIPE管道破裂信号,当进程向一个没有读端的管道写入数据时产生。
SIGALRM闹钟信号,通常由 alarm 函数设置的定时器超时产生。
SIGTERM终止信号,是 kill 命令默认发送的信号,用于请求程序正常终止。
SIGSTKFLT协处理器栈错误信号,在某些特定架构的系统上使用。
SIGCHLD子进程状态改变信号,当子进程终止、暂停或继续运行时,父进程会收到此信号。
SIGCONT继续执行信号,用于使暂停的进程继续运行。
SIGSTOP暂停进程信号,无法被捕获或忽略,用于暂停进程的执行。
SIGTSTP终端停止信号,通常由用户按下 Ctrl+Z 产生,用于暂停前台进程的运行。
SIGTTIN后台进程从控制终端读取数据时收到的信号。
SIGTTOU后台进程向控制终端写入数据时收到的信号。
SIGURG紧急数据到达信号,通常用于网络编程中表示有紧急数据需要处理。
SIGXCPU超过 CPU 时间限制信号,表示进程超过了设定的 CPU 使用时间限制。
SIGXFSZ超过文件大小限制信号,表示进程试图扩大文件超过了系统限制。
SIGVTALRM虚拟定时器信号,用于在虚拟时间内设置定时器超时。
SIGPROF性能分析定时器信号,用于性能分析工具。
SIGWINCH窗口大小改变信号,当终端窗口大小发生改变时产生。
SIGIO异步 I/O 信号,表示异步 I/O 事件发生。
SIGPWR电源故障信号,在某些系统上表示电源状态发生变化。
SIGSYS系统调用错误信号,表示进程执行了一个无效的系统调用。
SIGRTMIN实时信号的最小值。
35 - 64SIGRTMIN+1 至 SIGRTMAX 是一系列的实时信号,用于实时应用程序中的优先级信号传递等

 

2. pkill 与 killall:按名称终止进程

当需要批量终止同一类进程时,pkillkillall更高效:

用法

pkill [选项] 进程名
killall [选项] 进程名

示例

pkill nginx  # 终止所有nginx进程
killall -9 php-fpm  # 强制终止所有php-fpm进程

五、进程类型

1、前台进程

在终端界面运行的进程,运行前台进程后,终端无法操作

#将前台进程放到后台运行
firefox & 
#注意:该运行前台进程的方式,当终端关闭时,进程也会随着关闭
nohup firefox & #关闭终端,进程不掉 
#查看
jobs
#将进程调到前台运行
fg 1
#将正在运行的前台进程放到后台运行
ctrl + z
bg 1

2、后台进程

驻留在后端运行的进程

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值