第十三天:进程、系统性能和计划任务
一、进程相关概念
1、什么是进程
Process: 运行中的程序的一个副本,是被载入内存的一个指令集合,是资源分配的单位
进程ID(Process ID,PID)号码被用来标记各个进程
UID、GID、和SELinux语境决定对文件系统的存取和访问权限
通常从执行进程的用户来继承
存在生命周期
2、物理地址空间和虚拟地址空间
MMU:Memory Management Unit 负责虚拟地址转换为物理地址
程序在访问一个内存地址指向的内存时,CPU不是直接把这个地址送到内存总线上,而是被送到MMU
(Memory Management Unit),然后把这个内存地址映射到实际的物理内存地址上,然后通过总线再去
访问内存,程序操作的地址称为虚拟内存地址
TLB:Translation Lookaside Buffer 翻译后备缓冲区,用于保存虚拟地址和物理地址映射关系的缓存
3、进程的基本状态
创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写
控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调
度运行,把此时进程所处状态称为创建状态
就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
执行状态:进程处于就绪状态被调度后,进程进入执行状态
阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受
到阻塞。在满足请求时进入就绪状态等待系统调用
终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行
4、LRU 算法
LRU:Least Recently Used 近期最少使用算法(喜新厌旧),释放内存
5、IPC 进程间通信
IPC: Inter Process Communication
同一主机:
6、优先级
系统优先级:0-139, 数字越小,优先级越高,各有140个运行队列和过期队列
实时优先级: 99-0 值最大优先级最高
nice值:-20到19,对应系统优先级100-139或
7、进程分类
二、进程工具
1、Linux系统状态的查看及管理工具:
pstree -p 显示进程
ps
pidof
pgrep
top
htop
glance
pmap
vmstat
dstat
kill
pkill
job
bg
fg
nohup
2、进程树 pstree
3、进程信息 ps
4、查看进程信息 prtstat
5、设置和调整进程优先级
6、搜索进程
按条件搜索进程
ps 选项 | grep 'pattern' 灵活
pgrep 按预定义的模式
/sbin/pidof 按确切的程序名称查看pid
7、负载查询 uptime
8、显示CPU相关统计 mpstat
来自于sysstat包
9、查看进程实时状态 top 和 htop
(1)top
(2)htop
htop 命令是增强版的TOP命令,来自EPEL源,比top功能更强
10、内存空间 free
11、进程对应的内存映射 pmap
12、虚拟内存信息 vmstat
13、统计CPU和设备IO信息 iostat
iostat 可以提供更丰富的IO性能状态数据
此工具由sysstat包提供
14、监视磁盘I/O iotop
来自于iotop包
15、显示网络带宽使用情况 iftop
通过EPEL源的 iftop 包
16、查看网络实时吞吐量 nload
17、查看进程网络带宽的使用情况 nethogs
NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统计网络带宽使
用率。
18、网络监视工具iptraf-ng
来自于iptraf-ng包,可以进网络进行监控,对终端窗口大小有要求
19、系统资源统计 dstat
dstat由pcp-system-tools包提供,但安装dstat包即可, 可用于代替 vmstat,iostat功能
格式:
dstat [-afv] [options..] [delay [count]]
20、综合监控工具 glances
21、查看进程打开文件 lsof
22、 CentOS 8 新特性 cockpit
23、信号发送 kill
24、作业管理
Linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
让作业运行于后台
运行中的作业: Ctrl+z
尚未启动的作业: COMMAND &
后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台
后,剥离与终端的关系
nohup COMMAND &>/dev/null &
screen;COMMAND
tmux;COMMAND
25、并行运行
三、计划任务
通过任务计划,可以让系统自动的按时间或周期性任务执行任务
注意: 学习本节需要实现邮件通知,学习内容前必须安装并启动邮件服务
未来的某时间点执行一次任务
at
指定时间点,执行一次性任务
batch 系统自行选择空闲时间去执行此处指定的任务
周期性运行某任务
cron
1、一次性任务
2、周期性任务计划 cron
3、系统cron计划任务
/etc/crontab 格式说明,详情参见 man 5 crontab
注释行以 # 开头
4、用户计划任务
控制用户执行计划任务:
/etc/cron.{allow,deny}