Linux 系统进程管理与计划任务详解
一、程序与进程的基本概念
- 程序:保存在外部存储介质中的可执行机器代码和数据的静态集合。
- 进程:在CPU及内存中处于动态执行状态的计算机程序。
- 关系:每个程序启动后,可创建一个或多个进程。
二、进程查看工具
1. ps(查看静态进程信息)
-
常用选项:
-a:显示当前终端下所有进程(含其他用户);与-x结合显示系统所有进程。-u:以用户为主的格式输出进程信息。-x:显示当前用户所在终端的进程信息。-e:显示系统内所有进程。-l:长格式显示。-f:完整格式显示。
常用aux和elf的组合


-
输出字段含义:
USER:启动进程的用户账号。PID:进程唯一ID号。%CPU:CPU占用百分比。%MEM:内存占用百分比。VSZ:虚拟内存(swap)占用大小。RSS:物理内存占用大小。TTY:运行终端("?"表示未知/无需终端)。STAT:进程状态(S休眠、R运行、Z僵死、<高优先级、N低优先级、s父进程、+前台进程、L锁内存)。START:启动时间。TIME:占用CPU的时间。COMMAND:启动进程的命令名称。
2. top(查看动态进程信息)

-
核心指标:
-
load average:CPU平均负载(1分钟、5分钟、15分钟);若5/15分钟负载超过CPU个数2倍,系统高负载。 -
task:- total:系统当前所有进程的总数(包括所有状态)。
- running :正在占用 CPU 运行的进程数(处于
R状态)。 - sleeping :休眠的进程数(等待事件 / 资源,如 I/O 完成,处于
S或D状态)。 - stopped :被暂停的进程(如通过
ctrl+z挂起,处于T状态)。 - zombie:僵死进程(进程已终止,但父进程未回收其资源,需手动清理)。
-
%cpu:- us(user):用户空间进程占用 CPU 的比例(如应用程序)。若长期过高,可能是用户程序消耗资源过多。
- sy(system):内核空间进程占用 CPU 的比例(如系统调用、进程调度)。若过高,可能是内核频繁处理任务(如大量 I/O 调度)。
- ni(nice) :调整过优先级的用户进程(通过
nice命令设置)占用 CPU 的比例。 - id(idle):CPU 空闲的比例。若长期过低(如 < 10%),说明 CPU 负载高。
- wa(iowait):CPU 等待 I/O 操作(如磁盘读写、网络传输)的时间比例。若长期 > 20%,可能是 I/O 瓶颈(如磁盘慢、网络拥堵)。
- hi(hardware irq):硬件中断(如键盘、磁盘控制器)占用 CPU 的比例。
- si(software irq):软件中断(如系统定时器)占用 CPU 的比例。
- st(steal):被虚拟化环境中其他虚拟机占用的 CPU 比例(仅在虚拟机中有效)。
-
mem:- total:物理内存总容量(单位通常为 KB)。
- used:已被进程实际使用的内存(不包括缓冲 / 缓存)。
- free:完全空闲的内存(未被任何进程或缓冲 / 缓存使用)。
- buff/cache:
buff:用于缓冲写入的数据(即将写入磁盘的临时数据,避免频繁磁盘 I/O)。cache:用于缓存读取的数据(从磁盘读取过的数据,下次可直接从内存读取,加速访问)。- 这部分内存可被系统自动释放给需要的进程,因此实际 "可用内存"≈ free + buff/cache。
-
swap:- total:交换空间(虚拟内存)总容量(通常为磁盘上的 swap 分区 / 文件)。
- used:已使用的交换空间(当物理内存不足时,系统会将部分不常用内存数据写入 swap)。
- free:空闲的交换空间。
- avail Mem:估算的 "可用物理内存"(包括 free 内存 + 可释放的 buff/cache,供新进程使用的内存量)。
-
-
进程信息字段:
列名 含义说明 PID进程唯一 ID(系统中唯一,可用于 kill等命令操作进程)。USER进程所属用户(进程的创建者或运行用户)。 PR进程优先级(数值越小,优先级越高): - 0~39 之间(内核动态调整); - 实时优先级(-1~-20,比普通进程高)。 NI进程的 nice值(用户可调整的优先级偏移量): - 范围 -20~19(默认 0); - 数值越小,优先级越高(PR = NI + 20,便于显示)。VIRT进程占用的虚拟内存总量(包括物理内存、swap、未使用的分配内存等,单位 KB)。 RES进程实际使用的物理内存(不包括 swap,单位 KB, RES = 实际占用的物理内存)。SHR进程与其他进程共享的内存量(单位 KB,包括共享库、共享数据等)。 S进程状态(单字母标识): - R:运行中(正在使用 CPU 或等待调度); -S:休眠(等待事件,可被唤醒); -D:不可中断休眠(如等待磁盘 I/O,不能被信号终止); -T:停止(被ctrl+z或kill -19暂停); -Z:僵死(进程已终止,资源未回收)。%CPU进程自上次刷新以来占用 CPU 的百分比(单个核心为 100%,多核心总和可超过 100%)。 %MEM进程使用的物理内存占系统总内存的百分比。 TIME+进程自启动以来累计占用的 CPU 时间(精确到 0.01 秒)。 COMMAND启动进程的命令(按 c可显示完整命令路径)。
3. 其他进程查看命令
pgrep -l 进程名:查看某进程的进程号和名称(如pgrep -l systemd)。pstree:查看进程树形结构:-p:同时列出PID;-u:列出用户名;-a:列出完整命令。
三、进程控制
1. 手动启动进程
- 前台启动:默认方式(命令直接执行)。
- 后台启动:命令后加
&(如route &,进程放入后台执行)。
2. 进程挂起与恢复
- 挂起当前进程 :前台执行的命令按
ctrl+z,调入后台并停止执行。 - 查看后台进程 :
jobs -l。 - 恢复运行 :
bg:后台暂停的任务恢复后台执行。fg:后台任务恢复到前台执行。
3. 终止进程
kill 进程号:终止指定进程;-9选项强制终止(如kill -9 1234)。killall 进程名:终止多个同名进程;-9强制(如killall -9 httpd)。pkill:按进程名、用户、终端等终止(-U指定用户,-t指定终端)。
四、计划任务
用于在指定时间/日期执行预设任务(如备份、数据采集)。
1. at(一次性任务)
- 设置:
at 时间 日期(如at 23:30 2020-11-23),输入命令后按ctrl+d结束。 - 示例:
at 23:30 2020-11-23→at> ls / > /tmp/a→ctrl+d。 - 管理:
atq:查询at任务。at -c 任务号:查看任务详情。atrm 任务号:删除任务。
2. crontab(周期性任务)
- 配置文件:
- 系统任务:
/etc/crontab。 - 用户任务:
/var/spool/cron/(按用户名存储)。
- 系统任务:
- 时间格式:分 时 日 月 周(空格分隔)。
- 常用选项:
-e:编辑计划任务。-u 用户名:指定用户(如crontab -u natasha -e)。-l:查询任务列表。-r:删除任务列表。
- 示例:
-
为用户natasha配置每天14:23执行
/bin/echo "RHCSA",仅允许natasha和root创建任务:bashuseradd natasha crontab -u natasha -e 输入:23 14 * * * /bin/echo "RHCSA" vim /etc/cron.allow 创建白名单只允许natasha和root创建任务 写入:root、natasha systemctl restart crond && systemctl enable crond -
每月1~5号14:00-17:00,每10分钟执行
/bin/echo "I Love Galaxy":bashcrontab -e # 输入:*/10 14-17 1-5 * * /bin/echo "I Love Galaxy" systemctl restart crond && systemctl enable crond -
周一至周五8:00-21:00,每2分钟将当前时间附加到
/home/galaxy/my_first_cron_job.txt:bashcrontab -e # 输入:*/2 8-21 * * 1-5 date >> /home/galaxy/my_first_cron_job.txt
-