一、程序
1.1什么是程序?
是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具
用于描述进程要完成的功能,是控制进程执行的指令集
二、进程
2.1什么是进程?
运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
- 硬件资源分配的最小单位
- 进程ID(Process ID,PID)号码被用来标记各个进程
- UID、GID语境决定对文件系统的存取和访问权限
- 通常从执行进程的用户来继承
- 存在生命周期
- 都由其父进程创建
2.2进程的基本状态
2.3进程具有的特征
动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
并发性:任何进程都可以同其他进程一起并发执行;
独立性:进程是系统进行资源分配和调度的一个独立单位;
结构性:进程由程序、数据和进程控制块三部
2.4进程使用内存的问题
内存泄漏
内存溢出
内存不足:out of meory
2.5僵尸进程
2.5.1什么是僵尸进程
进程以及中止,但是依然占用硬件资源
父进程退出 子进程没有退出 那么这些子进程就没有父进程来管理了, 就变成僵尸进程
2.5.2如何过滤僵尸进程
ps aux | grep Z
2.5.3如何解决僵尸进程
STAT为Z代表为僵尸态
三、线程
线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间。
四、查看进程
4.1静态查看进程ps命令
ps 选项
常用选项 | 功能 |
a | 显示当前终端下的所有进程信息,包括其他用户的进程 |
u | 以用户为主的格式输出进程信息 |
x | 显示当前用户在所有终端下的进程信息 |
-e | 显示系统内的所有进程信息 |
-l | 长格式显示进程信息 |
-f | 完整的格式使用进程信息 |
[选项]--soft | 对属性排序,属性前加 - 表示降序排列 |
表头 | 含义 |
PID | 进程的ID号 |
TTY | 该进程是在哪个终端运行的 |
TIME | 该进程占用 CPU 的运算时间,不是系统时间 |
CMD | 产生此进程的命令名 |
4.1.1显示所有进程
ps aux 显示所有当前活动的进程的详细信息
表头 | 含义 |
USER | 该进程是由哪个用户产生的 |
PID | 进程的ID |
%CPU | 该进程占用cpu资源的百分比,百分比越高进程越耗费资源 |
%MEM | 该进程占用物理内存的百分比,百分比越高越耗费资源 |
VSZ | 该进程占用虚拟内存的大小,单位kb |
RSS | 该进程占用物理内存的大小,单位kb |
TTY | 该进程是在哪个终端运行的 |
STAT | 进程状态,常见的状态有以下几种 |
START | 该进程的启动时间 |
TIME | 该进程占用 CPU 的运算时间,不是系统时间 |
COMMAND | 产生此进程的命令名 |
4.1.2ps -ef
表头 | 含义 |
F | 进程标志,表示进程的权限 |
S | 进程状态。具体的状态和"psaux"命令中的 STAT 状态一致 |
UID | 运行此进程的用户的 ID |
PID | 进程的ID |
PPID | 父进程的ID |
C | 该进程的 CPU 使用率,单位是百分比 |
PRI | 进程的优先级数值越小,该进程的优先级越高,越早被 CPU 执行 |
NI | 进程的优先级,数值越小,该进程越早被执行;可以人为修改 |
ARRD | 该进程在内存的哪个位置 |
SZ | 该进程占用多大内存 |
WCHAN | 该进程是否运行。"-"代表正在运行 |
TTY | 该进程由哪个终端产生 |
TIME | 该进程占用 CPU 的运算时间,不是系统时间 |
CMD | 产生此进程的命令名 |
4.1.3查看进程特定属性
ps -o pid,ppid,cmd,%cpu,%mem..
后面可以跟多个参数,用逗号隔开
ps axo pid(仅显示pid)
ps -eo ppid,%CPU(仅显示父进程id,CPU占用)
4.1.4进程排序 --soft=
ps aux --sort=cpu | head -n 7 按CPU占用率降序排序所有进程 并显示前七行
ps aux --sort=-pid 按pid降序排列
4.2动态查看进程 top命令
top 选项 参数
top -u username:显示特定用户的进程使用情况。
top -p pid:显示特定PID的进程使用情况。
top -H:显示进程的线程视图,并按线程ID(LWP)进行排序。
top -o:可以使用不同的排序字段。例如,top -o %MEM将使用内存使用率进行排序。
top -n:设置top命令的显示次数或循环次数。例如,top -n 5将top命令的输出限制为5次。
top -b:以批处理模式运行top命令,将结果输出到标准输出,适用于脚本和后续处理。
top -d:设置刷新间隔,即更新数据的时间间隔。例如,top -d 5将每隔5秒刷新一次数据。
4.2.1top命令的交互界面
在top命令的交互界面中,可以使用不同的键来执行各种操作和切换不同的视图
k:杀死选中的进程
1
:切换到全局统计视图
m
:切换内存使用视图
t
:切换到进程排序模式,可以按不同的字段排序
4.3以树状结构显示当前系统中运行的进程pstree
pstree -p root 显示用户root的进程和对应pid
五、结束进程
5.1kill
kill命令根据进程的pid,向进程发送信号终止或操作进程
kill [信号] PID
常用信号
-1 重新加载进程
-9 强制结束进程
-19 暂时停止进程
-18 让进程从停止状态恢复
5.2killall
killall命令用于根据进程名终止匹配的所有进程
killall [选项] [信号] 进程名
选项 | |
-u | 仅终止指定用户的进程 |
-l | 列出可用的信号列表 |
-i | 交互式,询问是否要杀死某个进程 |
-I(大i) | 忽略进程名的大小写 |
六、进程的前后台调度
6.1为什么要将命令放到后台
不影响前台命令执行
可以并行执行命令
6.2进程前后台切换
1.命令+& 放入后台
2.jobs+后台执行的命令 可以看到命令的列表 编号
3.fg+编号 把任务调回前台
4.ctrl +z 把命令放回后台 ,但命令处于停止状态、
5.bg+编号 重新开始后台任务
七、计划任务管理
7.1crontab工具
定期执行脚本和命令的工具,可以按照指定的时间表安排执行命令,不需要手动操作。
格式 :crontab [选项] [file]
选项 | 功能 |
-u | 用来设定某个用户的 crontab 服务 |
-e | 编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。 |
-l | 显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容 |
-r | 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 |
-i | 在删除用户的 crontab 文件时,给确认提示 |
crontab -e 创建或编辑当前用户的crontab
项目 | 含义 | 范围 |
第一个* | 一小时里面的分钟 | 0~59 |
第二个* | 一天里面的小时(24小时制) | 0~23 |
第三个* | 一个月当中的几天 | 1~31 |
第四个* | 一年中的几个月 | 1~12 |
第五个* | 一周中的星期几 | 0~7(0和7都代表星期天) |
特殊符号 | 含义 |
*(星号) | 任何时间 |
,(逗号) | 不连续的时间用来隔开 |
-(杠) | 连续的时间范围 |
/(斜线) | 隔多久执行 |
实例
1.下午14点到晚上20点,每隔三小时执行一次
2.每天早上八点之前一个脚本
3.每小时执行一个命令并将输出保存到文件
4.1点和3点之间,每隔10分钟执行命令
八、怎么查看操作系统五大性能
操作系统五大性能
1.内存(free命令查看)
2.磁盘 磁盘剩余量 磁盘I/O读写性能(df ; lsblk ;fdisk -l)
3.CPU(iostat ,vmstat)
4.CPU占用率{top(实时) ps(静态)}
5..网络(iftop)