一、什么是进程?
进程由程序、数据和进程控制块组成,是正在执行的程序,也是资源调度的基本单位
进程是正在执行的一个程序或命令,每个进程都是一个运行的实体
并占用一定的系统资源
程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合
进程与程序的区别:进程是动态的、程序是静态的
进程与线程的区别:进程是一个应用程序的可执行实例,进程内部又划分许多线程
线程是在进程内部,比进程更小且能独立运行的基本单元
进程在执行过程中拥有独立的内存单元,同属一个进程的多个线程共享进程拥有的全部资源
二、Linux进程管理工作
linux系统中进程使用数字标记,每个进程标记号称为pid,系统启动的第一个进程为systemd PID号为1,该进程是唯一一个由系统内核直接运行的进程
新进程可以用系统调用fork产生,也可以从已经存在的进程中派生,新进程是产生它的进程的子进程
进程的三种状态:
执行running :
就绪:当进程已分配到除cpu以外的所有必要的资源,只要获得处理机便可立即执行,这时的进程状态称为就绪状态
阻塞:正在执行的进程由于等待某个事件发生而无法执行时,便放弃处理机而处于阻塞状态。引起进程阻塞的事件可以有多种,例如等待I/O完成、申请缓冲区不能满足、等待信件(信号)等
查看进程,判断linux是否健康
终止进程
进程优先级控制
三、进程管理命令
1、top查看cpu使用情况
查看服务器的进程占用资源
语法: top 动态显示
top - 23:56:39 up 6:32, 1 user, load average: 0.06, 0.04, 0.05 Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1862792 total, 1042164 free, 443760 used, 376868 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1240816 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 708 root 20 0 295380 5216 3968 S 0.3 0.3 0:39.16 vmtoolsd 6569 root 20 0 162112 2324 1592 R 0.3 0.1 0:00.02 top 1 root 20 0 125624 4156 2616 S 0.0 0.2 0:01.38 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00
第一行:
top - 23:56:39 up 6:32, 1 user, load average: 0.06, 0.04, 0.05
23:56:39 系统当前时间
up 6:32 系统的运行时间本机已经运行6小时32分
1 user 表示登录了2个用户
load average: 0.06, 0.04, 0.05 :系统在之前1分钟 5分钟 15分钟的平均负载。如果cpu是单核的,则这个数值超过1就是高负载
如果cpu是四核的,则这个数值超过4就是高负载
如何获取cpu的总核心数?
grep 'core id' /proc/cpuinfo | sort -u | wc -l
第二行:
Tasks: 160 total, 1 running, 159 sleeping, 0 stopped, 0 zombie
Tasks: 160 total 系统中的进程总数
1 running 正在运行的进程数
159 sleeping 睡眠的进程数
0 stopped 正在停止的进程数
0 zombie 僵尸进程数 如果不是0 则需要手工检查僵尸进程
第三行:
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu(s) 0.0 us 用户模式占用的cpu百分比
0.0 sy 系统模式占用的cpu百分比
0.0 ni 改变过优先级的用户进程占用的cpu百分比
100.0 id 空闲cpu占用的cpu百分比
0.0 wa 等待输入/输出的进程占用的cpu百分比
0.0 hi 硬中断请求服务占用的cpu百分比
0.0 si 软中断请求服务占用的cpu百分比
0.0 st st 意为虚拟时间百分比 就是当有虚拟机时,虚拟cpu等待实际的时间百分比
第四行:
KiB Mem : 1862792 total, 1039932 free, 444228 used, 378632 buff/cache
KiB Mem : 1862792 total 物理内存的总量
1039932 free
444228 used 已经使用的物理内存数量
378632 buff/cache
真正剩余内存=free +buff/cache 真正使用内存 = used-buff/cache
第五行:
KiB Swap: 2097148 total, 2097148 free, 0 used. 1240308 avail Mem