1. 进程与线程基础概念1.1 什么是进程进程是程序在操作系统中的一次执行过程是系统进行“资源分配和调度”的基本单位。它包含了程序执行所需的各种资源如内存空间、文件描述符等。每个进程都有自己独立的内存空间和系统资源不同进程之间相互隔离。关键点程序是静态的代码文件。进程是程序运行时的动态形态是程序的一个副本。进程拥有完整的生命周期准备期、运行期、终止期。1.2 什么是线程线程是进程中的一个执行单元是CPU 调度和分派的基本单位。一个进程可以包含多个线程。这些线程共享进程的内存空间和系统资源。每个线程有自己独立的栈空间和程序计数器。线程之间可以并发执行提高程序的执行效率。在多核 CPU 系统中每个核心处理的任务单元就是线程。2. 进程状态详解Linux 进程有以下几种核心状态可通过ps或top命令的STAT列查看状态码内核宏定义含义RTASK_RUNNING可执行态正在运行或在运行队列中等待STASK_INTERRUPTIBLE可中断的睡眠状态等待事件完成可被信号唤醒DTASK_UNINTERRUPTIBLE不可中断的睡眠状态通常等待硬件 I/O不能被信号唤醒TTASK_STOPPED暂停状态进程被信号暂停如SIGSTOPZTASK_ZOMBIE僵死态进程已终止但父进程尚未回收其资源状态字符补充说明在STAT列可能伴随出现高优先级进程N低优先级进程s会话首进程顶级进程进程位于前台进程组3. 进程查看方法3.1 图形化工具gnome-system-monitor3.2 命令行工具详解ps命令最常用的进程查看工具有三种风格UNIX、BSD、GNU。常用组合psax# 显示所有进程与终端相关无关psaux# BSD风格显示所有进程的详细信息用户、CPU、内存等ps-ef# UNIX风格显示完整格式的所有进程ps-ejH或psaxjf# 显示进程树层级关系ps-opid,comm,ni,pri,pcpu,ppid,stat,user,group# 显示指定字段ps aux输出字段说明USER进程所有者PID进程ID%CPUCPU使用百分比%MEM内存使用百分比VSZ虚拟内存大小 (KB)RSS常驻内存大小 (KB)TTY关联的终端STAT进程状态见第2节START进程启动时间TIME累计占用CPU时间COMMAND启动命令pgrep命令根据条件过滤进程ID。pgrep-uuid# 按用户ID查找pgrep-Uusername# 按用户名查找pgrep-ttty# 按终端查找pgrep-l# 同时列出进程名pgrep-a# 列出完整命令行pidof命令根据进程名查找PID。pidofvimtop命令动态实时查看系统进程和资源使用情况。启动与常用内部指令top-d5# 每5秒刷新一次top-b-n2# 以批次模式运行输出2次后退出top运行时快捷键P按 CPU 使用率排序M按内存使用率排序T按累计 CPU 时间排序k终止指定进程u仅显示指定用户的进程s更改刷新延迟秒q退出top信息区解读load average: 0.75, 0.53, 0.41系统1分钟、5分钟、15分钟的平均负载。%Cpu(s):us用户空间占用CPU百分比sy内核空间占用CPU百分比ni调整过nice值的进程占用百分比id空闲CPU百分比wa等待I/O的CPU时间百分比hi/si处理硬/软中断的时间百分比st被虚拟机偷走的时间虚拟化环境4. 进程的前后台调用命令 直接在后台启动进程。CtrlZ将当前前台进程挂起暂停并放入后台。jobs查看当前Shell中的所有后台作业。fg [%作业号]将后台作业调至前台运行。bg [%作业号]将后台挂起的作业继续运行仍在后台。5. 进程优先级管理5.1 优先级范围Linux 进程优先级范围是0-139。0-99实时优先级由内核控制数值越高优先级越高。100-139静态优先级用户可控对应nice 值 -20 到 19。5.2 调整优先级nice 值-20最高优先级到 19最低优先级。nice-n-5command# 以高优先级nice值为-5启动新进程renice-n-543331# 更改已运行进程PID 43331的nice值为-5同时还有当开启进程时任何指定优先级输入下方命令可以在开启的同时设定其优先级。[rootlocalhost Desktop]# nice -n -5 firefox 在top或ps中 - **PR** 列进程优先级显示为内核视角的优先级数字。 - **NI** 列nice值用户可调部分。## 6. 进程信号Signal的使用信号是一种软件中断用于进程间通信或控制进程行为。### 6.1 常用信号|信号名称|信号编号|默认行为|描述与触发方式||:---|:---|:---|:---||**SIGHUP**|1|终止进程|终端断开连接时发送。常用于让守护进程重新加载配置。||**SIGINT**|2|终止进程|用户在终端按下CtrlC时发送给前台进程。||**SIGQUIT**|3|终止并生成核心转储|用户在终端按下Ctrl\时发送。||**SIGTERM**|15|终止进程|**默认的终止信号**请求进程正常退出。||**SIGKILL**|9|强制终止进程|**不可被捕获、阻塞或忽略**。用于强制杀死无响应的进程。||**SIGSTOP**|19|暂停进程|**不可被捕获、阻塞或忽略**。暂停进程执行。||**SIGCONT**|18|继续执行|恢复被SIGSTOP暂停的进程。|### 6.2 信号控制工具示例bashkill-91234# 向PID 1234发送SIGKILL(9)信号kill-SIGTERM1234# 向PID 1234发送SIGTERM(15)信号killall-9process_name# 按进程名批量发送SIGKILL信号pkill-9-uusername# 按条件如用户发送信号7. Systemd 守护进程管理7.1 什么是守护进程守护进程Daemon是一种在后台持续运行、不与终端直接交互的特殊进程。通常在系统启动时自动运行为系统提供各种服务如Web服务器、日志服务。7.2 Systemd 简介Systemd 是现代 Linux 系统的初始化系统和服务管理器取代了传统的 SysVinit。7.3 核心管理命令systemctlsystemctl start servicename# 启动服务systemctl stop servicename# 停止服务systemctl restart servicename# 重启服务systemctl reload servicename# 重新加载配置不重启systemctl status servicename# 查看服务状态systemctlenableservicename# 设置开机自启systemctlenable--nowservicename# 设置开机自启并立即启动systemctl disable servicename# 禁用开机自启systemctl mask servicename# 冻结服务禁止启动systemctl unmask servicename# 解冻服务systemctl list-units# 查看所有单元当前状态systemctl list-unit-files# 查看所有单元的开机启动状态systemctl list-dependencies servicename# 列出服务的依赖关系systemctl set-default multi-user.target# 设置默认运行级别为无图形界面systemctl set-default graphical.target# 设置默认运行级别为图形界面systemctl get-default# 查看当前默认运行级别7.4 系统运行级别TargetSystemd 使用 target 替代传统的运行级别multi-user.target无图形界面的多用户模式对应传统级别 3。graphical.target图形界面的多用户模式对应传统级别 5。rescue.target救援模式单用户对应传统级别 1。poweroff.target / reboot.target关机/重启。9. 进程间通信IPC实战示例进程间通信IPC是多个进程之间交换数据与同步操作的机制。9.1 管道Pipe管道是最简单的 IPC 方式适用于有亲缘关系如父子进程的进程间通信。管道是单向的数据从一端写入从另一端读取。9.2 消息队列Message Queue消息队列允许进程通过消息链表进行通信消息具有类型标识支持不同进程间的异步通信。9.3 共享内存Shared Memory共享内存允许多个进程访问同一块内存区域是速度最快的 IPC 方式但需要进程自行处理同步问题。9.4 IPC 方式对比IPC 方式特点适用场景同步要求管道简单、单向、有亲缘关系父子进程间简单通信内核自动同步消息队列消息类型、异步、跨进程需要消息分类的通信内核提供队列同步共享内存最快、直接内存访问大数据量、高性能通信需进程自行同步如信号量8. 总结Linux 进程管理是系统运维和开发的基础。掌握进程的状态、查看命令ps,top、控制方法前后台、信号kill、优先级调整nice,renice以及现代服务管理工具systemctl能够帮助您有效地监控系统、优化性能、排查故障并确保关键服务的稳定运行。建议在实际环境中多加练习将这些命令和概念融会贯通。
Linux 进程管理核心概念与操作指南
1. 进程与线程基础概念1.1 什么是进程进程是程序在操作系统中的一次执行过程是系统进行“资源分配和调度”的基本单位。它包含了程序执行所需的各种资源如内存空间、文件描述符等。每个进程都有自己独立的内存空间和系统资源不同进程之间相互隔离。关键点程序是静态的代码文件。进程是程序运行时的动态形态是程序的一个副本。进程拥有完整的生命周期准备期、运行期、终止期。1.2 什么是线程线程是进程中的一个执行单元是CPU 调度和分派的基本单位。一个进程可以包含多个线程。这些线程共享进程的内存空间和系统资源。每个线程有自己独立的栈空间和程序计数器。线程之间可以并发执行提高程序的执行效率。在多核 CPU 系统中每个核心处理的任务单元就是线程。2. 进程状态详解Linux 进程有以下几种核心状态可通过ps或top命令的STAT列查看状态码内核宏定义含义RTASK_RUNNING可执行态正在运行或在运行队列中等待STASK_INTERRUPTIBLE可中断的睡眠状态等待事件完成可被信号唤醒DTASK_UNINTERRUPTIBLE不可中断的睡眠状态通常等待硬件 I/O不能被信号唤醒TTASK_STOPPED暂停状态进程被信号暂停如SIGSTOPZTASK_ZOMBIE僵死态进程已终止但父进程尚未回收其资源状态字符补充说明在STAT列可能伴随出现高优先级进程N低优先级进程s会话首进程顶级进程进程位于前台进程组3. 进程查看方法3.1 图形化工具gnome-system-monitor3.2 命令行工具详解ps命令最常用的进程查看工具有三种风格UNIX、BSD、GNU。常用组合psax# 显示所有进程与终端相关无关psaux# BSD风格显示所有进程的详细信息用户、CPU、内存等ps-ef# UNIX风格显示完整格式的所有进程ps-ejH或psaxjf# 显示进程树层级关系ps-opid,comm,ni,pri,pcpu,ppid,stat,user,group# 显示指定字段ps aux输出字段说明USER进程所有者PID进程ID%CPUCPU使用百分比%MEM内存使用百分比VSZ虚拟内存大小 (KB)RSS常驻内存大小 (KB)TTY关联的终端STAT进程状态见第2节START进程启动时间TIME累计占用CPU时间COMMAND启动命令pgrep命令根据条件过滤进程ID。pgrep-uuid# 按用户ID查找pgrep-Uusername# 按用户名查找pgrep-ttty# 按终端查找pgrep-l# 同时列出进程名pgrep-a# 列出完整命令行pidof命令根据进程名查找PID。pidofvimtop命令动态实时查看系统进程和资源使用情况。启动与常用内部指令top-d5# 每5秒刷新一次top-b-n2# 以批次模式运行输出2次后退出top运行时快捷键P按 CPU 使用率排序M按内存使用率排序T按累计 CPU 时间排序k终止指定进程u仅显示指定用户的进程s更改刷新延迟秒q退出top信息区解读load average: 0.75, 0.53, 0.41系统1分钟、5分钟、15分钟的平均负载。%Cpu(s):us用户空间占用CPU百分比sy内核空间占用CPU百分比ni调整过nice值的进程占用百分比id空闲CPU百分比wa等待I/O的CPU时间百分比hi/si处理硬/软中断的时间百分比st被虚拟机偷走的时间虚拟化环境4. 进程的前后台调用命令 直接在后台启动进程。CtrlZ将当前前台进程挂起暂停并放入后台。jobs查看当前Shell中的所有后台作业。fg [%作业号]将后台作业调至前台运行。bg [%作业号]将后台挂起的作业继续运行仍在后台。5. 进程优先级管理5.1 优先级范围Linux 进程优先级范围是0-139。0-99实时优先级由内核控制数值越高优先级越高。100-139静态优先级用户可控对应nice 值 -20 到 19。5.2 调整优先级nice 值-20最高优先级到 19最低优先级。nice-n-5command# 以高优先级nice值为-5启动新进程renice-n-543331# 更改已运行进程PID 43331的nice值为-5同时还有当开启进程时任何指定优先级输入下方命令可以在开启的同时设定其优先级。[rootlocalhost Desktop]# nice -n -5 firefox 在top或ps中 - **PR** 列进程优先级显示为内核视角的优先级数字。 - **NI** 列nice值用户可调部分。## 6. 进程信号Signal的使用信号是一种软件中断用于进程间通信或控制进程行为。### 6.1 常用信号|信号名称|信号编号|默认行为|描述与触发方式||:---|:---|:---|:---||**SIGHUP**|1|终止进程|终端断开连接时发送。常用于让守护进程重新加载配置。||**SIGINT**|2|终止进程|用户在终端按下CtrlC时发送给前台进程。||**SIGQUIT**|3|终止并生成核心转储|用户在终端按下Ctrl\时发送。||**SIGTERM**|15|终止进程|**默认的终止信号**请求进程正常退出。||**SIGKILL**|9|强制终止进程|**不可被捕获、阻塞或忽略**。用于强制杀死无响应的进程。||**SIGSTOP**|19|暂停进程|**不可被捕获、阻塞或忽略**。暂停进程执行。||**SIGCONT**|18|继续执行|恢复被SIGSTOP暂停的进程。|### 6.2 信号控制工具示例bashkill-91234# 向PID 1234发送SIGKILL(9)信号kill-SIGTERM1234# 向PID 1234发送SIGTERM(15)信号killall-9process_name# 按进程名批量发送SIGKILL信号pkill-9-uusername# 按条件如用户发送信号7. Systemd 守护进程管理7.1 什么是守护进程守护进程Daemon是一种在后台持续运行、不与终端直接交互的特殊进程。通常在系统启动时自动运行为系统提供各种服务如Web服务器、日志服务。7.2 Systemd 简介Systemd 是现代 Linux 系统的初始化系统和服务管理器取代了传统的 SysVinit。7.3 核心管理命令systemctlsystemctl start servicename# 启动服务systemctl stop servicename# 停止服务systemctl restart servicename# 重启服务systemctl reload servicename# 重新加载配置不重启systemctl status servicename# 查看服务状态systemctlenableservicename# 设置开机自启systemctlenable--nowservicename# 设置开机自启并立即启动systemctl disable servicename# 禁用开机自启systemctl mask servicename# 冻结服务禁止启动systemctl unmask servicename# 解冻服务systemctl list-units# 查看所有单元当前状态systemctl list-unit-files# 查看所有单元的开机启动状态systemctl list-dependencies servicename# 列出服务的依赖关系systemctl set-default multi-user.target# 设置默认运行级别为无图形界面systemctl set-default graphical.target# 设置默认运行级别为图形界面systemctl get-default# 查看当前默认运行级别7.4 系统运行级别TargetSystemd 使用 target 替代传统的运行级别multi-user.target无图形界面的多用户模式对应传统级别 3。graphical.target图形界面的多用户模式对应传统级别 5。rescue.target救援模式单用户对应传统级别 1。poweroff.target / reboot.target关机/重启。9. 进程间通信IPC实战示例进程间通信IPC是多个进程之间交换数据与同步操作的机制。9.1 管道Pipe管道是最简单的 IPC 方式适用于有亲缘关系如父子进程的进程间通信。管道是单向的数据从一端写入从另一端读取。9.2 消息队列Message Queue消息队列允许进程通过消息链表进行通信消息具有类型标识支持不同进程间的异步通信。9.3 共享内存Shared Memory共享内存允许多个进程访问同一块内存区域是速度最快的 IPC 方式但需要进程自行处理同步问题。9.4 IPC 方式对比IPC 方式特点适用场景同步要求管道简单、单向、有亲缘关系父子进程间简单通信内核自动同步消息队列消息类型、异步、跨进程需要消息分类的通信内核提供队列同步共享内存最快、直接内存访问大数据量、高性能通信需进程自行同步如信号量8. 总结Linux 进程管理是系统运维和开发的基础。掌握进程的状态、查看命令ps,top、控制方法前后台、信号kill、优先级调整nice,renice以及现代服务管理工具systemctl能够帮助您有效地监控系统、优化性能、排查故障并确保关键服务的稳定运行。建议在实际环境中多加练习将这些命令和概念融会贯通。