Linux 进程管理与计划任务设置
一、进程管理
进程管理用于监控、控制系统中运行的程序(进程),包括查看进程状态、调整优先级、终止异常进程等。以下是核心命令及操作说明:
1. 常用进程查看命令
(1)ps:查看进程静态信息
功能:显示系统当前进程的快照(静态信息)。
|----|--------------------------------------|
| 选项 | 说明 |
| -a | 显示当前终端下的所有进程(包括其他用户),与 -x 结合显示系统所有进程 |
| -u | 以用户为中心的格式输出进程信息 |
| -x | 显示当前用户所有终端的进程(包括无终端的后台进程) |
| -e | 显示系统内所有进程 |
| -l | 长格式显示进程信息 |
| -f | 完整格式显示进程信息 |
常用用法:
java
ps -aux # 显示所有进程的详细信息(用户视角)
ps -elf # 显示所有进程的完整格式(系统视角)
输出字段说明:
|---------|---------------------------------|
| 字段 | 含义 |
| USER | 启动进程的用户账号 |
| PID | 进程唯一 ID(系统中唯一) |
| %CPU | 进程占用 CPU 的百分比 |
| %MEM | 进程占用内存的百分比 |
| VSZ | 占用虚拟内存(swap)的大小(KB) |
| RSS | 占用物理内存的大小(KB) |
| TTY | 进程运行的终端(? 表示无需终端) |
| STAT | 进程状态(R运行、S休眠、Z僵死、<高优先级、N低优先级等) |
| START | 进程启动时间 |
| TIME | 进程占用 CPU 的总时间 |
| COMMAND | 启动进程的命令名称 |
(2)top:查看进程动态信息
功能:实时动态监控进程状态(默认每 3 秒刷新一次)。
界面核心指标说明:
- 顶部系统信息 :
- load average: 0.1, 0.5, 1.0:CPU 1 分钟、5 分钟、15 分钟内的平均负载(超过 CPU 核心数 2 倍表示高负载)。
- Task(进程统计) :
- total:总进程数;running:运行中;sleeping:休眠;stopped:停止;zombie:僵死。
- % CPU(CPU 占用) :
- us:用户进程占用;sy:系统进程占用;ni:调整过优先级的用户进程;id:空闲 CPU;wa:I/O 等待;hi/si:硬 / 软中断;st:虚拟化占用。
- Mem/Swap:物理内存 / 交换空间的使用情况(总容量、已用、空闲)。
- 进程列表字段:
|-----------|-------------------------------|
| 字段 | 含义 |
| PID | 进程 ID |
| USER | 进程属主 |
| PR | 进程优先级(内核动态调整) |
| NI | 进程 nice 值(-20~19,值越小优先级越高) |
| VIRT | 进程占用的虚拟内存总量(KB) |
| RES | 进程占用的物理内存总量(KB) |
| SHR | 与其他进程共享的内存量(KB) |
| S | 进程状态(D不可中断休眠、R运行、S休眠、T停止、Z僵死) |
| %CPU/%MEM | 进程占用 CPU / 内存的百分比 |
| TIME+ | 进程启动后占用的 CPU 总时间 |
| COMMAND | 启动进程的命令 |
(3)pgrep -l <进程名>:按名称查询进程
功能:根据进程名查找对应的进程 ID(PID)和名称。
示例:
pgrep -l systemd # 查找名为sshd的进程,输出格式:PID 进程名
(4)pstree:查看进程树形结构
功能:以树形图展示进程间的父子关系。
|----|------------|
| 选项 | 说明 |
| -p | 同时显示进程 PID |
| -u | 显示进程所属用户 |
| -a | 显示完整的命令行信息 |
示例:
pstree -pu # 显示进程树、PID及所属用户
2. 进程控制操作
(1)进程启动方式
-
前台启动:命令直接在当前终端运行(默认方式),例如:
ls /home # 前台执行,执行期间终端被占用
-
后台启动:命令后加 &,进程在后台运行,终端可继续使用:
route & # 后台执行route命令
(2)进程挂起与恢复
- 挂起当前进程:前台进程运行时,按 Ctrl + Z 可将其挂起(转入后台并停止执行)。
示例:
top # 前台运行top,按Ctrl+Z挂起
-
查看后台进程:
jobs -l # 列出后台进程(-l显示PID)
-
恢复后台进程:
-
-
bg <任务号>:将后台挂起的进程恢复运行(继续在后台):
bg 1 # 恢复任务号为1的后台进程
-
-
-
fg <任务号>:将后台进程调回前台运行:
fg 1 # 将任务号为1的进程调至前台
-
3. 进程终止与优先级调整
(1)kill <进程号>:通过 PID 终止进程
功能:向指定 PID 的进程发送终止信号(默认信号为 15,正常终止)。
-
强制终止(信号 9,无法忽略):
kill -9 1234 # 强制终止PID为1234的进程
(2)pkill <条件>:按条件终止进程
功能:根据进程名、用户、终端等属性终止进程。
|------------|-----------|
| 选项 | 说明 |
| -U <用户名> | 终止指定用户的进程 |
| -t <终端> | 终止指定终端的进程 |
示例:
pkill -U zhangsan # 终止用户zhangsan的所有进程
pkill -9 sshd # 强制终止所有名为sshd的进程
(3)killall <进程名>:按名称终止所有同名进程
示例:
killall -9 httpd # 强制终止所有httpd进程
(4)renice:调整进程优先级
功能 :修改进程的 nice 值(-20~19,值越小优先级越高)。
示例:
renice -5 1234 # 将PID为1234的进程nice值改为-5(提高优先级)
二、计划任务设置
计划任务用于自动执行周期性或一次性任务(如备份、监控等),核心工具为 at(一次性)和 crontab(周期性)。
1. 一次性计划任务(at)
(1)设置一次性任务
语法 :at <时间> [日期],进入编辑界面输入命令,按 Ctrl + D 保存退出。
示例:
java
at 23:30 2025-07-31 # 设置2025年7月31日23:30执行任务
at> ls / > /tmp/dir_list # 任务内容:将/目录列表写入/tmp/dir_list
at> <EOT> # 按Ctrl+D结束编辑
(2)管理at任务
-
查看待执行任务:
atq # 列出所有at任务(格式:任务号 执行时间 用户名)
-
查看任务详情:
at -c 1 # 查看任务号为1的具体内容
-
删除任务:
atrm 1 # 删除任务号为1的at任务
2. 周期性计划任务(crontab)
(1)基本语法
通过 crontab -e 编辑任务,格式为:
分 时 日 月 周 命令
|------|---------------|------|-------------------------|
| 时间字段 | 取值范围 | 特殊符号 | 含义 |
| 分 | 0~59 | , | 枚举(如10,20表示 10 分和 20 分) |
| 时 | 0~23 | - | 范围(如9-17表示 9 点到 17 点) |
| 日 | 1~31 | */n | 间隔(如*/2表示每 2 天) |
| 月 | 1~12 | | |
| 周 | 0~7(0/7 为周日) | | |
(2)crontab 命令选项
|-----------|------------------------------------------|
| 选项 | 说明 |
| -e | 编辑当前用户的计划任务 |
| -u <用户> | 指定用户(仅 root 可用),如 crontab -u zhangsan -e |
| -l | 列出当前用户的计划任务 |
| -r | 删除当前用户的所有计划任务 |
(3)配置示例
java
# 每天凌晨3点执行备份脚本
0 3 * * * /root/backup.sh
# 每周一、三、五的18:30执行日志清理
30 18 * * 1,3,5 /usr/bin/clean_logs.sh
# 每月1日和15日的0点,每小时执行一次监控脚本
0 */1 1,15 * * /usr/local/monitor.sh
(4)任务文件存放
- 系统级任务:/etc/crontab(需 root 编辑)。
- 用户级任务:/var/spool/cron/<用户名>(自动生成,无需手动编辑)。
(5)服务管理
crontab 依赖 crond 服务,需确保其运行:
java
systemctl restart crond # 重启服务
systemctl enable crond # 设置开机自启
3. 注意事项
- 关机影响:at 和 crontab 任务均依赖系统运行状态。若系统在任务预定时间关机,at 任务会失效,crontab 任务会跳过该次执行,后续周期继续。
- 命令路径:计划任务中建议使用命令绝对路径(如 /usr/bin/ls 而非 ls),避免环境变量问题。
- 日志查看:任务执行日志可通过 /var/log/cron 或 journalctl -u crond 查看。
通过上述工具和操作,可实现对 Linux 进程的全面管理及自动化任务调度,适用于系统监控、定期维护等场景。