Linux 进程、作业控制、定时任务 完整版整理笔记
关闭远程连接 / 当前终端,进程依然后台执行。由父进程创建,主要负责处理用户请求与具体业务。负责创建、管理子进程,子进程结束后,负责。无需查询 PID,一次性杀死所有同名进程。纠正原笔记错误:父进程先退出的进程称为。程序运行后的形态,是操作系统分配。存放在硬盘中、具备执行功能的。,循环重复执行任务,企业常用。等资源的基本单位,可理解为。将前台进程直接放入后台运行;,该子进程就变为僵尸进程。负载,反
一、程序、进程、线程
1. 基础概念
-
程序 存放在硬盘中、具备执行功能的静态文件,不占用运行资源。 示例:
/usr/local/apache/bin/httpd、/bin/ls -
进程 程序运行后的形态,是操作系统分配 CPU、内存、硬盘、网络、GPU 等资源的基本单位,可理解为动态资源池。
- 进程之间相互隔离,彼此不能直接访问资源;
- 一个程序可以启动出多个进程。
- 线程 真正完成程序功能的执行单元。
- 同一个进程内的所有线程共享进程资源,通信效率高;
- 进程是线程的集合,一个进程至少包含 1 个主线程;
- 每个进程最多可以有 65535 个线程。
2. 进程分类(按线程特性划分)
- 多线程程序 进程内创建大量线程处理任务。
- 优点:资源利用率高、线程间通信效率高
- 代表:Nginx、Java 程序
- 多进程程序 依靠创建子进程处理任务,线程数量少。
- 优点:进程相互隔离,单个子进程故障不影响整体,稳定性更强
- 代表:Apache httpd
3. 按运行停留时间划分
- 普通进程 任务执行完毕自动退出,生命周期短。 实操案例:
bash
运行
ls /etc
- 守护进程(Daemon) 常驻系统后台运行,通常监听服务器端口;当客户端请求到达对应端口时,调用程序响应请求。
- 特点:脱离终端,长期运行;
- 常见服务:
httpd、sshd、crond、network。
4. 按父子关系划分
-
父进程 负责创建、管理子进程,子进程结束后,负责回收子进程资源。
-
子进程 由父进程创建,主要负责处理用户请求与具体业务。
-
僵尸进程 子进程先结束,父进程未及时回收其资源,该子进程就变为僵尸进程。
- 状态标识:
Z - 危害:占用进程 ID,大量僵尸进程会导致系统无法创建新进程。
纠正原笔记错误:父进程先退出的进程称为孤儿进程,并非僵尸进程。
5. 进程状态标识(必记)
表格
| 状态码 | 状态名称 | 说明 |
|---|---|---|
| R | 运行态 | 正在使用 CPU 运行,或排队等待 CPU 调度 |
| S | 休眠态(可中断) | 进程暂时暂停,可被信号唤醒,多数进程常态 |
| D | 不可中断休眠 | 等待硬件 I/O 资源,无法被普通信号终止 |
| Z | 僵尸进程 | 子进程已退出,父进程未回收资源 |
| T | 停止态 | 进程被挂起、暂停运行 |
二、系统平均负载
1. 概念
平均负载是系统中 运行态 (R) + 不可中断态 (D) 进程数量的统计平均值,系统默认统计三组数据:1 分钟、5 分钟、15 分钟 负载,反映系统繁忙程度。
2. 核心规则
负载高低和 CPU 核心数 强相关:
- 单核 CPU:负载值等于 1,CPU 满载;大于 1,系统过载;
- 多核 CPU:负载值接近 CPU 核心数,属于正常满载;
- 趋势判断:1 分钟负载远大于 15 分钟 → 系统压力突发上涨;三组数值接近 → 负载长期平稳。
3. 查看平均负载(命令 + 案例)
bash
运行
# 1. uptime:最简查看,仅展示负载
uptime
# 2. w:查看登录用户 + 系统负载
w
# 3. top:动态监控,首行包含负载信息
top
三、查看进程命令
1. ps 命令(静态快照,不自动刷新)
常用参数组合及用法
ps aux查看所有用户的全部进程,展示 CPU、内存、PID、进程状态等完整信息。
bash
运行
ps aux
# 过滤指定进程(示例:查看httpd进程)
ps aux | grep httpd
ps -elf侧重查看父子进程关系、进程优先级。
bash
运行
ps -elf | grep httpd
ps -eLf详细查看进程内的线程数量。
bash
运行
ps -eLf | grep httpd
关键字段(ps aux)
USER:进程运行用户(降权场景重点查看)PID:进程唯一编号STAT:进程状态(R/S/D/Z/T)
2. top 命令(动态实时监控,默认 3 秒刷新一次)
基础参数 + 案例
bash
运行
# 直接运行,默认动态刷新
top
# -d 指定刷新间隔(单位:秒),每2秒刷新一次
top -d 2
# -n 指定总刷新次数,刷新5次后自动退出
top -n 5
# -b 批处理模式,配合-n输出全部内容
top -b -n 2
# -u 仅查看指定用户的进程
top -u huangjie
# -p 仅监控指定PID的进程
top -p 1234
运行中的交互快捷键
- 按
1:拆分展示每一颗 CPU 核心的占用率 - 按
M:按内存使用率从高到低排序 - 按
P:按 CPU 使用率从高到低排序 - 按
q:退出 top
四、前后台作业控制
1. & 符号
将前台进程直接放入后台运行;关闭终端后,进程会终止。 案例:
bash
运行
# 后台运行睡眠程序,持续100秒
sleep 100 &
2. nohup 命令
作用:让进程脱离终端运行,关闭远程连接 / 当前终端,进程依然后台执行。 默认日志输出到 nohup.out。 语法与案例:
bash
运行
# 基础用法,日志默认存入 nohup.out
nohup sleep 300 &
# 进阶用法:自定义日志文件
nohup /usr/local/apache/bin/apachectl start &>> /tmp/httpd.log &
3. 后台任务管理指令
jobs -l查看当前终端下所有后台任务,-l参数额外显示进程 PID。
bash
运行
jobs -l
-
Ctrl + Z将当前前台进程挂起(暂停),移入后台。 实操:执行sleep 200→ 按下Ctrl+Z。 -
bg 任务号让后台暂停的进程恢复运行。
bash
运行
# 先查看任务编号
jobs
# 恢复编号为1的后台任务
bg 1
fg 任务号将后台进程调回前台运行。
bash
运行
fg 1
五、终止进程命令
1. kill(按 PID 终止进程)
语法:kill [信号] PID
- 默认信号 15:优雅停止,允许进程保存数据、正常退出;
- 信号
-9:强制终止进程(慎用,易造成数据丢失)。
案例:
bash
运行
# 优雅停止 PID 为1234的进程
kill 1234
# 强制杀死进程
kill -9 1234
2. killall(按进程名终止所有同名进程)
无需查询 PID,一次性杀死所有同名进程。
补充:CentOS7 最小化安装需先安装工具:
yum install -y psmisc
案例:
bash
运行
# 停止所有 httpd 进程
killall httpd
# 强制杀死所有 httpd 进程
killall -9 httpd
3. pkill(功能更强,支持进程名、终端名)
bash
运行
# 按进程名强制终止,用法同 killall
pkill -9 httpd
# -t 按终端名终止进程(示例:踢出 pts/0 终端)
pkill -9 -t pts/0
六、定时任务
分类:一次性定时任务(at)、周期性定时任务(crond)
(一)一次性定时任务 at
1. 环境准备
at 工具需手动安装并启动服务:
bash
运行
# 安装软件
yum install -y at
# 启动服务并设置开机自启
systemctl start atd
systemctl enable atd
2. 常用时间格式
now + 5 minutes:5 分钟后执行now + 1 hours:1 小时后执行10:30:今日 10:30 执行16:00 tomorrow:明日 16:00 执行
3. 完整实操案例
bash
运行
# 进入定时任务编辑模式:5分钟后创建文件并写入内容
at now + 5 minutes
# 输入执行命令
touch /tmp/test.txt
echo "at任务执行成功" >> /tmp/test.txt
# 按下 Ctrl+D 提交任务
4. at 任务管理命令
bash
运行
# 查询所有一次性定时任务(等价 at -l)
atq
# 查看指定任务详情(任务号从 atq 获取)
at -c 任务号
# 删除指定任务(等价 at -d)
atrm 任务号
(二)周期性定时任务 crond
系统自带守护进程 crond,循环重复执行任务,企业常用。
1. 核心文件与路径
- 服务名:
crond - 服务状态查看:
systemctl status crond - 运行日志(排错用):
/var/log/cron - 全局配置文件:
/etc/crontab - 用户定时任务存放目录:
/var/spool/cron/(每个用户独立文件) - 邮件相关:
- 用户邮件目录:
/var/spool/mail/用户名 - 邮件发送失败临时文件:
/var/spool/postfix/maildrop/
- 用户邮件目录:
2. 时间格式(五段式,必背)
plaintext
分 时 日 月 周 执行命令
* * * * * command
取值范围:
- 分:0~59
- 时:0~23
- 日:1~31
- 月:1~12
- 周:0~7(0 和 7 均代表周日)
3. 时间符号含义
表格
| 符号 | 作用 |
|---|---|
* |
代表「每一个时间单位」 |
, |
分隔多个离散时间点(或者) |
- |
表示连续的时间范围 |
/n |
表示间隔频率,每隔 n 个单位执行一次 |
4. crontab 操作命令
bash
运行
# 编辑/创建当前用户定时任务
crontab -e
# 查看当前用户定时任务
crontab -l
# 清空当前用户所有定时任务(谨慎使用)
crontab -r
# root 查看指定用户的定时任务
crontab -l -u 用户名
5. 综合实操案例
bash
运行
# 1. 每分钟向日志文件写入内容
* * * * * echo "每分钟测试" >> /tmp/1.log
# 2. 每小时的30分、50分执行文件拷贝
30,50 * * * * cp /etc/passwd /tmp/
# 3. 每小时 10~20分 每分钟执行任务
10-20 * * * * date >> /tmp/time.log
# 4. 每隔30分钟重启Apache
*/30 * * * * /usr/local/apache/bin/apachectl restart
# 5. 每天凌晨2点执行脚本
0 2 * * * /root/test.sh
# 6. 每周日 23点30分 清理临时日志
30 23 * * 0 rm -rf /tmp/*.log
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)