Linux 进程管理与计划任务
Linux 进程管理与计划任务
一、程序与进程的概念区分
- 程序:存储在硬盘等外部存储介质中的可执行机器代码及数据的静态集合,是指令的静态形式。
- 进程:程序被加载到内存中运行时,在 CPU 和内存中处于动态执行状态的实例,是指令的动态执行过程。
- 关系:一个程序启动后可创建一个或多个进程(例如浏览器程序可打开多个标签页,每个标签页对应一个进程)。
二、进程查看工具及参数解析
1. ps
:查看静态进程信息
用于显示系统在某一时刻的进程快照,常用参数组合及功能如下:
参数 | 含义 |
---|---|
-a | 显示当前终端下所有用户的进程,与-x 结合可显示系统所有进程 |
-u | 以用户为中心的格式输出进程信息(含用户、CPU、内存占用等) |
-x | 显示当前用户所有终端的进程(包括无终端关联的进程) |
-e | 显示系统内所有进程 |
-l | 以长格式显示进程信息(含优先级、状态等详细字段) |
-f | 以完整格式显示进程信息(含父进程 ID、启动时间等) |
输出字段说明:
USER
:启动进程的用户账号PID
:进程的唯一数字 ID(系统内唯一)%CPU
:进程占用 CPU 的百分比%MEM
:进程占用内存的百分比VSZ
:进程占用的虚拟内存大小(单位:KB)RSS
:进程占用的物理内存大小(单位:KB)TTY
:进程运行的终端(?
表示无需终端或终端未知)STAT
:进程状态(R
运行、S
休眠、Z
僵死、<
高优先级、N
低优先级等)START
:进程启动时间TIME
:进程累计占用 CPU 的时间COMMAND
:启动进程的命令名称
2. top
:实时监控动态进程
实时刷新显示进程状态(默认 3 秒刷新一次,按q
退出),核心信息包括:
(1)系统整体状态
load average
:1 分钟、5 分钟、15 分钟内的 CPU 平均负载(若 5/15 分钟负载超过 CPU 核心数的 2 倍,视为高负载)Tasks
:进程总数及状态分布(running
运行中、sleeping
休眠、stopped
停止、zombie
僵死)%cpu
:CPU 占用细分(us
用户进程、sy
系统进程、ni
优先级调整、id
空闲、wa
I/O 等待等)Mem
:物理内存使用情况Swap
:虚拟内存(交换空间)使用情况
(2)进程列表字段
PR
:进程优先级(数值越小优先级越高)NI
:进程 nice 值(范围 - 20~19,值越小优先级越高)VIRT
:进程占用的虚拟内存总量(KB)RES
:进程占用的物理内存总量(KB)SHR
:进程与其他进程共享的内存总量(KB)S
:进程状态(D
不可中断休眠、R
运行、S
休眠、T
停止、Z
僵死)TIME+
:进程启动至今的 CPU 占用时间(精确到 0.01 秒)
3. 其他进程查看工具
-
pgrep -l 进程名
:查询指定进程的名称及 PID(如pgrep -l systemd
) -
pstree
:以树形结构展示进程间的父子关系
-p
:同时显示进程 PID-u
:显示进程所属用户-a
:显示完整命令行
三、进程控制操作
1. 进程的启动方式
- 前台启动:直接执行命令(如
ls
),命令行被占用直至进程结束 - 后台启动:命令后加
&
(如route &
),进程在后台运行,不阻塞当前终端
2. 进程的挂起与恢复
-
挂起进程:前台进程运行时按
Ctrl+Z
,进程被暂停并转入后台 -
查看后台进程:
jobs -l
(显示进程 ID、状态及命令) -
恢复后台进程
:
bg 进程ID
:后台恢复运行(如bg 1
)fg 进程ID
:前台恢复运行(如fg 1
)
3. 进程的终止
-
kill 进程ID
:正常终止指定 PID 的进程(如kill 1234
) -
kill -9 进程ID
:强制终止进程(用于常规kill
无效时,如kill -9 1234
) -
killall 进程名
:终止所有同名进程(如killall firefox
),-9
参数可强制终止 -
pstree
:按条件终止进程
-U 用户名
:终止指定用户的进程(如pkill -U natasha
)-t 终端
:终止指定终端的进程(如pkill -t pts/0
)
四、计划任务配置
1. at
:一次性计划任务
用于配置在指定时间执行一次的任务:
-
创建任务:
at 23:30 2024-12-31 # 指定执行时间 at> ls / > /tmp/result.txt # 输入任务命令 按Ctrl+D保存退出
-
管理任务:
atq
:查看所有at
任务at -c 任务号
:查看任务详情atrm 任务号
:删除任务
2. crontab
:周期性计划任务
用于配置重复执行的任务,核心文件包括/etc/crontab
(系统任务)和/var/spool/cron/
(用户任务)。
(1)时间格式
遵循 “分 时 日 月 周” 的格式,支持特殊符号:
*
:匹配所有值(如 “分” 位为*
表示每分钟)*/n
:每隔 n 单位(如*/10
表示每 10 分钟)a-b
:范围(如8-17
表示 8 到 17 点)a,b
:多个值(如1,3,5
表示周一、三、五)
(2)常用命令
crontab -e
:编辑当前用户的任务crontab -u 用户名 -e
:编辑指定用户的任务crontab -l
:查看任务列表crontab -r
:删除所有任务
例:
-
每月 1-5 日 14:00-17:00,每 10 分钟执行/bin/echo “I Love Galaxy”:
crontab -e # 加入:*/10 14-17 1-5 * * /bin/echo "I Love Galaxy" systemctl restart crond
-
周一至周五 8:00-21:00,每 2 分钟将当前时间追加到/home/galaxy/my_first_cron_job.txt:
crontab -e # 加入:*/2 8-21 * * 1-5 date >> /home/galaxy/my_first_cron_job.txt systemctl restart crond
总结
进程管理通过ps
、top
等工具监控系统运行状态,结合kill
、bg
等命令控制进程生命周期;计划任务通过at
和crontab
实现任务的自动执行,是系统自动化运维的核心工具。掌握这些操作可有效提升系统管理效率。