Linux(七)进程管理
文章目录
前言
进程管理是操作系统管理进程和资源的关键部分。在 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 服务状态。
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)