前言

进程管理是操作系统管理进程和资源的关键部分。在 Linux 中,进程是系统中所有任务的核心,进程管理命令主要用于查看、控制和调度系统中的进程。本文介绍了Linux进程管理的相关命令,帮助用户高效管理系统中的进程和计划任务。

一、程序与进程的关系

1.1 程序与进程定义

  • 程序:是存储在硬盘上的可执行代码,像一本书的内容,静态存放在硬盘或其他存储设备上。
  • 进程:是程序在运行时的实例,像是一本书被人打开并阅读时,它在你眼前执行的过程。每当你运行一个程序,操作系统会创建一个进程,分配内存和CPU 时间来执行这个程序。

1.2 父进程和子进程

  • 父进程:通过调用 fork() 等系统调用主动创建另一个进程的进程。它是子进程的“创建者”或“发起者”,拥有子进程的控制权,每个进程(除了 PID=1 的 init/systemd 进程)都有父进程。父进程的 PID 被称为子进程的 PPID(Parent Process ID)。
  • 子进程: 是指由另一个进程(父进程)通过 fork()等系统调用创建出来的新进程。它是父进程的“副本”,继承父进程的大部分属性(环境变量、打开的文件描述符、信号处理等),拥有独立的PID(进程 ID),与父进程并行运行,相互独立。子进程终止后,会向父进程发送 SIGCHLD 信号,等待父进程回收其资源。

二、查看进程信息

2.1 ps命令

ps(process status)命令用于查看系统中当前运行的进程。它显示了与进程相关的信息,如进程 ID (PID)、用户、CPU 和内存使用率等。

  • 常用选项
    ps -aux:显示所有进程,包括其他用户的进程。
    ps -ef :以标准格式显示所有进程。
    ps -aux | grep [进程名]:通过管道和 grep 命令过滤进程。
  • 输出字段解释
    USER:进程所属的用户。
    PID:进程 ID。
    %CPU:进程占用的 CPU 百分比。
    %MEM:进程占用的内存百分比。
    VSZ:进程使用的虚拟内存(单位 KB)。
    RSS:进程使用的物理内存(单位 KB)。
    STAT:进程的状态,常见状态有:R(运行)、S(睡眠)、Z(僵尸)、T(停止)等。
    START:进程的启动时间。
    TIME:进程占用的 CPU 时间。
    COMMAND:启动该进程的命令。
详解
STAT:该进程的状态(D:不可中断的休眠状态:R:正在运行状态;S:处于休眠状态,可被唤醒;T:停止状态,可能是在后台暂停或进程处于跟踪调试状态: Z:僵尸进程,进程已经中止,但是部分程序还在内存当中)
。
D:系统守护进程
T:调式、程序执行一般停止
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态D 不可中断状态.
它们含意如下::
<: 表示进程运行在高优先级上
N: 表示进程运行在低优先级上
L: 表示进程有页面锁定在内存中
s: 表示进程是控制进程
l: 表示进程是多线程的
+: 表示当前进程运行在前台
D:系统守护进程

在这里插入图片描述

vim sq.txt  #执行vim
ps -aux | grep vim   #查找 vim 进程,并显示它的 CPU 和内存占用情况

在这里插入图片描述

2.2 动态查看进程信息top命令

top 命令用于动态显示 Linux 系统中运行的进程和资源使用情况,实时更新显示。

  • 常用快捷键
    P:按 CPU 使用率排序。
    M:按内存使用量排序。
    T:按时间排序。
    1:查看几个cpu
    q:退出 top。
  • 输出解释
    PID:进程 ID。
    USER:启动该进程的用户。
    %CPU:进程占用的 CPU 百分比。
    %MEM:进程占用的内存百分比。
    TIME+:进程累计使用的 CPU 时间。
    COMMAND:执行的命令。
    在这里插入图片描述
    按 P 键查看 CPU 使用率排序
    在这里插入图片描述
    按 M 键查看内存使用情况排序
    在这里插入图片描述

2.3 pgrep命令查询进程信息

pgrep命令用于根据名称或其他条件查找进程。

  • 常用的参数
    -l:选项可同时输出对应的进程名以及PID
    -U:选项查询特定用户的进程
    -t:选项查询在特定终端运行的进程
pgrep -l "log"  # 匹配进程名中包含 log 的进程

在这里插入图片描述

pgrep -l -U root   # 筛选属于用户root的进程

在这里插入图片描述

2.4 pstree命令以树形结构列出进程信息

pstree 是一个用于显示当前系统中进程树结构的命令行工具 。它以树状图形式展示进程间的父子关系,便于直观理解进程的层级关系。pstree 命令默认情况下只显示各进程的名称.

  • 常用的参数
    -p:选项使用时可以同时列出对应的PID号
    -u:选项可以列出对应的用户名
    -a:选项可以列出完整的命令信息
    在这里插入图片描述
    在这里插入图片描述

三、进程的启动方式

3.1 手工启动进程

由用户手工输入命令或者可执行程序的路径,可以至少启动一个进程。根据该进程是否 需要占用当前的命令终端,手工启动又可以分为前台启动和后台启动。
进程在前台运行(如执行ls -l命令)时,用户必须等到该进程执行结束并退出以后才能继续输入其他命令,大多数命令操作在前台启动运行。进程在后台运行时,用户可以继续在当前终端中输入其他命令,而无须等待该进程结束,适用于运行耗时较长的操作。
启动后台进程需要使用&操作符,将&操作符放在要执行命令的最后面,进程启动后会直接放入后台运行,而不占用前台的命令操作界面,方便用户进行其他操作。例如,当使 用 cp 命令从光 盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合& 符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作。

cp /dev/cdrom /opt/centos7.iso &

在这里插入图片描述
在这里插入图片描述

3.2 调度启动

在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如夜间)进行。这时就需要用户事先进行调度安排,指定任务运行的时间,当系统到达设定时间时会自动启动并完成指定的任务。调度启动的计划任务进程均在后台运行,不会占用用户的命令终端。
进程的调度启动可以通过 at、crontab 命令进行设置,其中 at 命令用于设置一次性(如12:15 时重启网络服务)计划任务,crontab 命令用于设置周期性运行(如每周五 17:30 备份数据库)的计划任务。

四、进程的前后台调度

4.1 Ctrl+Z组合键

当Linux操作系统中的命令正在前台执行时(运行尚未结束),按Ctrl+Z组合键可以将当前进程挂起(调入后台并停止执行),这种操作在需要暂停当前进程并进行其他操作时特别有用。例如,打包usr并且调入后台 ,可以按 Ctrl+Z 组合键将该下载任务调入后台并暂停执行
在这里插入图片描述

4.2 jobs 命令

jobs 命令用于查看当前会话中运行的后台任务。

  • 常用选项
    jobs -l:列出当前所有后台任务及其进程 ID。
    在这里插入图片描述
  • fg 和 bg 命令
    fg:将后台任务带回前台执行。
    bg:将暂停的任务放回后台继续执行。
    %1表示任务1;而1表示pid=1
    在这里插入图片描述
    在这里插入图片描述

五、终止进程的运行

5.1 Ctrl+C组合键

​中断 正在执行的命令
在这里插入图片描述

5.2 kill 命令

kill 命令用于发送信号给进程,通常用来终止进程。

  • 常用选项
    kill [PID]:正常终止进程。
    kill -9 [PID]:强制终止进程(不可恢复)。
    kill -3 [PID]:终止进程,调试崩溃时用,后生成core dump
    kill -15 [PID]:优雅地请求进程终止。
pgrep -l "tar"  #查询tar进程的pid号
kill -9 47672  #强制杀死该进程

请添加图片描述
请添加图片描述

5.3 killall 命令

killall 命令根据进程名称终止进程。

vim csq &
vim ts &
ps -aux|grep vim  # 查看和vim有关的进程
killall -9 vim    # 终止所有名为 vim的进程

在这里插入图片描述

5.4 pkill 命令

pkill 命令根据进程属性(如用户名、终端等)终止进程。

su - csq      # 切换用户
vim de &
ps -aux|grep csq
pkill -9 -U csq
ps -aux|grep csq  # 查看该用户的进程是否被杀死

在这里插入图片描述

六、计划任务管理

计划任务用于自动执行系统中的任务。Linux 中常用的计划任务工具包括 at和 cron。

6.1 一次性任务:at 命令

at 命令用于设置一次性任务,任务将在指定时间执行。

at at 20:29 2026-07-13
at>pgrep -U root|wc -l > /opt/ps.root  #要执行的命令
at> <EOT>  # 按CTRL+D提交任务
atq  #列出待执行任务及编号
artm [任务编号]  #删除该编号的任务 

在这里插入图片描述
请添加图片描述
请添加图片描述
请添加图片描述

6.2 周期性任务:cron 命令

cron 用于设置定期执行的任务。用户可以通过 crontab 命令编辑和管理自己的计划任务。

  • 主要设置文件
    全局配置文件,位于文件:/etc/crontab
    系统默认的设置,位于目录:/etc/cron.*/
    用户定义的设置,位于文件:/var/spool/cron/用户名
    *:每个字段的取值范围:分钟(0-59),小时(0-23),日期(1-31),月份(1-12),星期(0-6,0 为周日)。
  • 应用示例
    0 17 * * 1-5 每周一至周五下午5点整
    30 8 * * 1,3,5 每周一、三、五上午8点30分
    0 8-18/2 * * * 每天上午8点至下午6点,每隔2小时执行一次
    0 0 */3 * * 每3天执行一次
  • 常用命令
    crontab -e [-u 用户名]:编辑当前用户的 cron 任务。
    crontab -l [-u 用户名]:列出当前用户的 cron 任务。
    crontab -r [-u 用户名]:删除当前用户的所有 cron 任务。
crontab -e   #编辑当前用户cron任务
#每天的 7:50 启动 httpd 服务,15:25 停止 httpd 服务
50 7 * * * /usr/bin/systemctl start httpd.service
25 15 * * * /usr/bin/systemctl stop httpd.service

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

crontab -l [-u 用户名]  #列出当前用户的 cron 任务
crontab -r [-u 用户名]  #删除当前用户的 cron 任务

在这里插入图片描述
在这里插入图片描述

6.3 cron 服务管理

  • 启动cron服务
    请添加图片描述
  • 查看cron服务状态
    请添加图片描述
  • 开机自启动
    请添加图片描述

总结

这篇文档详细介绍了 Linux 系统中的进程管理及相关命令,涵盖了从基本概念到实际操作的全方位内容。以下是核心要点总结:

  • 程序与进程的关系
    程序:静态存储在硬盘上的可执行代码。
    进程:程序运行的动态实例,由操作系统分配资源(如内存、CPU)执行。
    父进程与子进程:父进程创建并管理子进程,类似于公司中的上下级关系。
  • 查看进程信息
    ps 命令:查看当前运行的进程,常用选项如 ps -aux 或 ps -ef,支持通过 grep 过滤特定进程。
    top 命令:动态实时显示进程及资源占用情况,支持按 CPU、内存等排序。
    pgrep 和 pstree:分别用于查询进程 PID 和以树形结构展示进程关系。
  • 进程的启动方式
    手工启动:分为前台启动(占用终端)和后台启动(使用 & 符号)。
    调度启动:通过 at 设置一次性任务,或通过 cron 设置周期性任务(如定时备份)。
  • 进程的前后台调度
    Ctrl+Z:挂起当前前台进程到后台并暂停。
    jobs、fg、bg:分别用于查看后台任务、将任务恢复到前台或后台继续运行。
  • 终止进程
    Ctrl+C:中断当前前台进程。
    kill、killall、pkill:通过 PID、进程名或属性终止进程,kill -9 用于强制终止。
  • 计划任务管理
    at:设置一次性任务,如定时执行脚本。
    cron:通过 crontab 管理周期性任务,支持灵活的时间配置(如每天、每周或每隔几天执行)。
    服务管理:使用 systemctl 启动、启用或查看 crond 服务状态。
Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐