1、进程管理
什么是进程
当我们在运行一个程序时,那么我们将该程序称之为进程。
注意:
①:当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。
②:在进程运行的过程中,服务器上会有各种状态来表示当前进程的指标信息。
进程和程序的区别
①:程序是指令和数据的有序集合,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
②:程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。也就是说进程会随着程序的终止而销毁,不会永远在系统中存在。
在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。
生命周期
进程的运行过程:
1. 用户进行运行程序,进程启动,系统进行分配内存等属性信息
2. 会fork生成子进程,子进程会继承父进程的衣钵
3. 子进程在运行的时候,父进程在等待状态
4. 子进程完成事务,将事务交给父进程,子进程就会退出
5. 子进程在工作的时候,父进程退出了,正常退出,子进程也会退出,非正常退出,子进程就会变成僵尸进程
6. 进程在运行的时候,系统会进行分配ID信息 PID PPID
2、进程的状态
ps aux是常用组合,查看进程用户、PID、占用CPU百分比、占用内存百分比、状态、执行的命令等。(相当于 ps -ef )
选项:
a #显示所有的进程
u #显示正确的用户或者ID信息
x #显示所有没有终端的进程
-e #显示所有的进程
-f #显示更多的信息
[root@lixian ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 128020 6628 ? Ss 08:41 0:01 /usr/lib/systemd/ root 2 0.0 0.0 0 0 ? S 08:41 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 08:41 0:02 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< 08:41 0:00 [kworker/0:0H] root 7 0.0 0.0 0 0 ? S 08:41 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 08:41 0:00 [rcu_bh]
每列的含义:
USER #进程运行的用户 PID #进程的ID号 %CPU #进程占用CPU的使用百分比 %MEM #进程占用内存的使用百分比 VSZ #虚拟内存集,进程占用虚拟内存的使用空间 RSS #物理内存集,进程占用物理内存的使用空间 TTY #终端 ? #没有终端,内核运行的一些程序 tty1 #本地机器的终端 pts/0 #远程的虚拟终端,0代表第一个终端 pts/1 #远程的虚拟第二个终端,以此类推 STAT #进程运行的状态 S #正在休眠状态 s #父进程,说明下面有子进程 R #正在运行的状态 D #无法被终止的休眠状态 T #被暂停或者被追踪的状态 Z #僵尸进程 l #字母L,以线程方式运行,多进程的 < #优先级别高的进程 N #优先级别低的进程 + #前台运行 START #启动的时间,分钟 TIME #进程使用CPU的时间 COMMAND #执行的指令 有 [ ] #内核态,系统运行的程序 无 [ ] #用户态,用户运行的程序
3、进程的动态显示
top - 15:40:26 up 6:59, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 90 total, 1 running, 89 sleeping, 0 stopped, 0 zombie %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 KiB Mem : 2028088 total, 1510164 free, 139416 used, 378508 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 1677964 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 12151 root 20 0 0 0 0 S 0.3 0.0 0:00.02 kworker/0:1 12152 root 20 0 161880 2184 1556 R 0.3 0.1 0:00.18 top 1 root 20 0 128020 6628 4164 S 0.0 0.3 0:01.91 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:02.09 ksoftirqd/0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
含义解释:
第一行 top: 11:30:21 #当前系统的时间 up 5 days, 23:38, #系统运行时间,从开机到现在共运行多长时间 3 users, #shell窗口的数量,登录的用户数量 load average: 0.00, 0.01, 0.05 #系统的平均负载 1分钟 5分钟 15分钟 第二行 Tasks: #任务 126 total, #总的任务数量 2 running, #2个正在运行中 123 sleeping, #123个处于休眠状态 1 stopped, #1个处于停止状态 0 zombie #0个僵尸状态 第三行 %Cpu(s): #占用CPU的使用时间百分比 0.3 us, #内核态,系统运行程序所占用cpu的时间百分比 0.0 sy, #用户态,用户运行程序所占用cpu的时间百分比 0.0 ni, #优先级高的程序所占用cpu的时间百分比 99.7 id, #空闲的占用cpu的时间百分比 0.0 wa, #等待io完成的占用cpu的时间百分比 0.0 hi, #hardirq 处理硬中断占用cpu的时间百分比 0.0 si, #softirq 处理软中断占用cpu的时间百分比 0.0 st #监控程序所窃取主机的占用cpu的时间百分比 具体内容: PID #进程的ID USER #进程运行的用户 PR #优先级的映射值,跟NI相差20个数 0 对应NI的-20 NI #优先级,值越小,优先级越高 VIRT #虚拟内存使用空间 RES #物理内存使用空间 SHR #共享内存的使用空间 S #进程的运行状态 %CPU #占用的CPU的百分比 %MEM #占用内存的百分比 TIME+ #运行的时间 COMMAND #运行的命令
[root@lixian ~]# top -d 1 #设置刷新时间 [root@lixian ~]# top -u test #显示指定用户的进程信息 [root@lixian ~]# top -p 45487 #根据指定pid信息显示进程信息
什么的中断?
中断是系统用来影响硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的终端处理程序来影响设备的请求。
中断分为 硬中断和软中断
硬中断:处理跟硬件的请求,特点,速度够快
软中断:内核进行处理中断请求,硬中断处理时间过长的请求,放入内存中,更新一下硬件寄存器,内存进行调取这个请求进行处理,以线程的方式运行
/proc/softirqs #关于软中断的操作文件
为了满足实时系统的要求,中断处理应该是越快越好。linux为了实现这个特点,当中断发生的时候,硬中断处理那些短时间就可以完成的工作,而将那些处理事件比较长的工作,放到中断之后来完成,也就是软中断(softirq)来完成。
为了解决中断处理程序执行过长和丢失中断的问题,Linux将中断处理过程分成了两个阶段:
第一阶段:用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关工作
第二阶段:用来延迟处理第一阶段未完成的工作,通常以内核线程的方式运行。
free -m当前内存的使用情况
显示的当前内存的使用,-m的意思是M字节来显示内容
total used free shared buff/cache available Mem: 972 124 140 48 707 595 Swap: 3047 58 2989
具体含义:
total #总的 used #使用的 free #剩余的 shared #共享的 buff/cache #缓冲和缓存所占用的内存空间 available #程序最大可用的内存空间
top内部命令
q #退出
h #帮助
z #高亮显示
b #高亮显示正在运行状态的进程
s #设置刷新时间
M #根据内存的使用百分比的大小进行排序
P #根据cpu的使用百分比的大小进行排序
1 #数字1,显示所有cpu核心的工作状态