Linux 进程管理与计划任务设置
一、进程管理
进程管理用于监控、控制系统中运行的程序(进程),包括查看进程状态、调整优先级、终止异常进程等。以下是核心命令及操作说明:
1. 常用进程查看命令
(1)ps:查看进程静态信息
功能:显示系统当前进程的快照(静态信息)。
选项 |
说明 |
-a |
显示当前终端下的所有进程(包括其他用户),与 -x 结合显示系统所有进程 |
-u |
以用户为中心的格式输出进程信息 |
-x |
显示当前用户所有终端的进程(包括无终端的后台进程) |
-e |
显示系统内所有进程 |
-l |
长格式显示进程信息 |
-f |
完整格式显示进程信息 |
常用用法:
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 保存退出。
示例:
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)配置示例
# 每天凌晨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 服务,需确保其运行:
systemctl restart crond # 重启服务
systemctl enable crond # 设置开机自启
3. 注意事项
- 关机影响:at 和 crontab 任务均依赖系统运行状态。若系统在任务预定时间关机,at 任务会失效,crontab 任务会跳过该次执行,后续周期继续。
- 命令路径:计划任务中建议使用命令绝对路径(如 /usr/bin/ls 而非 ls),避免环境变量问题。
- 日志查看:任务执行日志可通过 /var/log/cron 或 journalctl -u crond 查看。
通过上述工具和操作,可实现对 Linux 进程的全面管理及自动化任务调度,适用于系统监控、定期维护等场景。
评论前必须登录!
注册