文章目录
- 一 、程序和进程的关系
- 1.1程序
- 1.2进程
- 1.3进程和线程的关系
- 二 、查看进程的命令
- 2.1 ps命令
- 2.11 ps aux
- 2.12 ps -elf
- 2.3 top 命令
- 2.4 pgrep命令
- 2.5 进程的启动方式
- 2.51 手工启动
- 2.52 调度启用
- 进程的前后台调度
- 终止进程的运行
- 2.6 kill命令
- 三 、计划任务管理
- 3.1使用at命令,设置一次性计划任务
- 3.2 使用crontab命令,设置周期性计划任务
- 总结
一 、程序和进程的关系
1.1程序
- 程序 保存在硬盘、光盘等戒指中的代码或数据
- 文件中静态保存的代码
1.2进程
- 再cpu及内存中运行的程序代码
- 动态执行的代码
- 父子进程
每个程序可以创建一个或多个进程
1.3进程和线程的关系
进程:资源分配的最小单位。
线程:程序执行的最小单位。
总的来说:进程有独立的地址空间,线程没有单独的地址空间(同一进程内的线程共享进程的地址空间)。
二 、查看进程的命令
2.1 ps命令
ps命令是静态查询进程命令
2.11 ps aux

| 命令 | 作用 |
|---|---|
| a | 显示终端上的所有进程,包括其他用户的所有进程 |
| u | 表示列出进程的用户 |
| x | 显示所有终端的进程 |
如果直接输入ps命令则是将只显示当前用户会话中打开的进程

| 命令 | 作用 |
|---|---|
| A | 显示终端上的所有进程,包括其他用户的所有进程 |
| U | 表示列出进程的用户 |
| X | 显示所有终端的进程 |
| USER | 进程的用户 |
| PID | 进程号 |
| %CPU | 进程所占cpu的使用率 |
| %MEN | 进程所占内存的使用率 |
| VSZ | 进程所使用的虚拟内存 |
| RSS | 进程所占物理内存大小 |
| TTY | 启动进程的终端名,如果不是终端启动的就是? |
| STAT | 运行进程的状态 d:不可中断的休眠状态 r:正在运行状态 s:处于休眠状态,可以唤醒 t:停止状态, z:僵尸进程,进程已经终止,但是部分程序还在内存 |
| START | 进程被触发启动的时间 |
| TIME | 进程实际使用cpu运行的时间 |
| COMMAND | 进程的启动命令 |
- 僵尸进程:一个进程结束的时候如果该进程的父进程先结束了,就不会变成僵尸进程,相反就会变成僵尸进程(父进程没有回收机制)
2.12 ps -elf

| 命令 | 作用 |
|---|---|
| e | 显示系统内所有进程 |
| l | 长格式显示 |
| f | 使用完整的形式显示进程 |
第一行每个表示的意思
| 名称 | 作用 |
|---|---|
| F | 内核分配给进程的系统标记 |
| S | 进程的状态 |
| UID | 启动这些进程的用户 |
| PID | 进程的进程号 |
| PPID | 进程的父进程号 |
| C | 进程中的CPU占用率 |
| PRI | 进程的优先级,数字越大优先级越低 |
| NI | 谦让度值用来参与决定优先级 |
| ADDR | 进程的内存地址 |
| sz | 假如进程被换出,所需交换空间的大致大小 |
| WCHAN | 若该进程在睡眠,则显示睡眠中的系统函数名 |
| STIME | 进程启动时的系统时间 |
| TTY | 进程启动时的终端设备 |
| TIME | 运行进程需要的累计CPU时间 |
| CMD | 进程的启动命令 |
通过ps命令来查询CPU或内存的使用效率
ps aux --sort -%cpu | head -10 按cpu降序顺序,-为降序,+为升序,p和%意思一样

ps aux --sort +pmem | head -n 10 按内存升序排列

2.3 top 命令
top命令是查询动态的进程信息排名

第一行:任务队列信息
| 名称 | 作用 |
|---|---|
| 15:13:55 | 系统时间 |
| up 59 min | 系统已运行时长 |
| 2 users | 当前登录用户数 |
| load average: 0.00,0.01,0.05 | 平均负载,即单位时间内系统处理的任务数,后面三个数值 分别为1分钟、5分钟、15分钟前到现在的平均值 |
负载均衡还可以通过w、uptime等命令来查看

第二行: 系统进程信息
| 名称 | 作用 |
|---|---|
| Tasks | 总进程数 |
| running | 正在运行的进程数 |
| sleeping | 休眠的进程数 |
| stopped | 中止的进程数 |
| zombie | 僵死的进程数 |
第三行: CPU占用信息
| 名称 | 作用 |
|---|---|
| us | 用户占用 |
| sy | 内核占用 |
| ni | 优先级调度占用 |
| id | 空闲CPU,要了解空闲的CPU百分比,主要看%id部分 |
| wa | I/o等待占用 |
| hi | 硬件中断占用 |
| si | 软件中断占用 |
| st | 虚拟化占用 |
第四行:内存占用信息
| 名称 | 作用 |
|---|---|
| total | 总空闲内存 |
| free | 空闲内存 |
| used | 己用内存 |
| lbuff/cache | 物理内存和交换内存的缓冲区总和 |
第五行:交换空间(swap)占用信息
| 名称 | 作用 |
|---|---|
| total | 总交换内存 |
| free | 空闲交换内存 |
| used | 已用交换内存 |
| avail Mem | 可用物理空间 |
top常用命令:
| 命令 | 作用 |
|---|---|
| P键 | 根据CPU使用百分比大小进行排序 |
| M键 | 根据驻留内存大小进行排序 |
| N键 | 根据启动时间进行排序 |
| c键 | 切换显示命令名称和完整命令行 |
| h键 | 可以获得top程序的在线帮助信息 |
| q键 | 退出top程序 |
| 数字1键 | 显示CPU个数和状态 |
- 按shift+m,对查询到的进程按内存占比大小排序

- 查看当前进程

2.4 pgrep命令
根据特定的条件去查询进程信息
pgrep + [选项]
| 命令 | 作用 |
|---|---|
| 只显示pid号 | |
| -l | 显示进程名 |
| -U | 指定特定用户 |
| -t | 指定终端 |

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QZOMJ0GM-1681225798144)(null)]
查询信息
| 查询 | 命令 |
|---|---|
| 内存 | free-m 、vmstat、 atop |
| cpu | top、vmstat、atop、sar |
| IO | iostat、iotop、vmstat、atop、sar |
| 网卡流量 | ifconfig、iftop、atop |
| 磁盘信息 | df、du、atop |
| 进程 | ps、top、htop、atop、pidstat |
2.5 进程的启动方式
进程启动方式为手工启动和调度启动
2.51 手工启动
- 前台启动:用户输入命令,直接执行的程序
- 后台启动:在命令行尾加入“&”符号
使用cp命令从光盘中制作镜像文件时,由于需要复制的数据较多,耗时较长,因此可结合“&”符号将复制操作放到后台运行,以便用户可以继续执行其他命令操作

2.52 调度启用
进程的前后台调度
CTRL+z:将当前进程挂起,即调到后台停止执行
jobs:查看处于后台的任务列表
fg:将后台的进程恢复到前台运行,可以指定任务号
终止进程的运行
CTRL+c:中断正在执行的命令
2.6 kill命令
kill:用于终止指定pid号的进程
kill -s:指定信号名
killall:用于终止指定名称相关的所有进程
kill -9:用于强制执行
我们经常用kill命令区杀死一个进程,但是有时候会出现不成功的现象,这时就需要用到kill -9,我们平时用的kill默认为kill -15
kill -15 代表的信号为SIGTERM,这是告诉你进程要关闭,让你自行停止运行并退出。
kill -9 代表的信号是SIGKILL,表示进程被终止,需要立即退出。

2.61 pkill 命令
根据特定的条件终止相应的进程
-U:用户名
-t:终端名

三 、计划任务管理
3.1使用at命令,设置一次性计划任务
at [HH:MM] [yyyy-mm-dd] #不带年月日为今天执行
atq #查看未执行的一次性计划任务
atrm 1 #删除第1条任务

3.2 使用crontab命令,设置周期性计划任务
crontab命令
- 按照预先设置的时间周期(分钟、小时、日、月、周)重复执行用户指定的命令操作
- 属于周期性计划任务
- 服务脚本名称:/etc/init.d/crond

- 时间数值的特殊标识方法:
| 特殊字符 | 说明 |
|---|---|
| *(星号) | 代表任何时刻都接受的意思。 |
| ,(逗号) | 代表分隔时段的意思 |
| -(减号) | 代表一段时间范围内 |
| /n(斜杠) | n代表数字,代表每隔n单位间隔的意思 |
范围:

编辑计划任务
crontab -e [-u 用户名]
查看计划任务
crontab -l [-u 用户名]
删除计划任务
crontab -r [-u 用户名]
演示,从周一到周五每天17:00执行ls命令)



总结
1、首先学习了程序和进程的关系
2、学习了ps静态和top动态查询进程以及pgrep指定特定的条件查询
3、终止进程的方式以及kill命令
4、计划任务管理at和crontab命令


















