• 欢迎访问显哥博客,本网站纯属学习技术,绝无商业用途,欢迎小伙伴们共同学习!研究技术!QQ:52249909 加我QQ
  • 世界75亿人,这么小的概率,能认识你,是我一生的幸运,不妨加个QQ接触一下:52249909 加我QQ

linux系统进程管理【显哥出品,必为精品】

运维基础 lixian 2年前 (2020-01-06) 620次浏览 4个评论 扫描二维码
文章目录[隐藏]

1、进程管理

什么是进程

当我们在运行一个程序时,那么我们将该程序称之为进程。
注意:
①:当程序运行为进程后,系统会为该进程分配内存,以及运行的身份和权限。
②:在进程运行的过程中,服务器上会有各种状态来表示当前进程的指标信息。

进程和程序的区别

①:程序是指令和数据的有序集合,是一个静态的概念。而进程是程序在处理机上的一次执行过程,它是一个动态的概念。
②:程序可以作为一种软件资料长期存在,而进程是有一定生命期的。程序是永久的,进程是暂时的。也就是说进程会随着程序的终止而销毁,不会永远在系统中存在。
在传统的操作系统中,程序并不能独立运行,作为资源分配和独立运行的基本单元都是进程。

生命周期

进程的运行过程:
1. 用户进行运行程序,进程启动,系统进行分配内存等属性信息
2. 会fork生成子进程,子进程会继承父进程的衣钵
3. 子进程在运行的时候,父进程在等待状态
4. 子进程完成事务,将事务交给父进程,子进程就会退出
5. 子进程在工作的时候,父进程退出了,正常退出,子进程也会退出,非正常退出,子进程就会变成僵尸进程
6. 进程在运行的时候,系统会进行分配ID信息 PID PPID

2、进程的状态

ps aux是常用组合,查看进程用户、PID、占用CPU百分比、占用内存百分比、状态、执行的命令等。(相当于 ps -ef )
选项:
a #显示所有的进程
u #显示正确的用户或者ID信息
x #显示所有没有终端的进程
-e #显示所有的进程
-f #显示更多的信息
linux系统进程管理【显哥出品,必为精品】

[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、进程的动态显示

linux系统进程管理【显哥出品,必为精品】
top #实时显示系统各种状态信息

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核心的工作状态


本站博主 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:linux系统进程管理【显哥出品,必为精品】
喜欢 (41)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到
(4)个小伙伴在吐槽
  1. 1234
    匿名2021-07-06 15:20 回复
  2. 我是林志玲,爱你哦,么么哒
    匿名2020-01-06 22:08 回复
  3. 小哥哥挺秀的嘛,教教我 :neutral: :neutral:
    匿名2020-01-06 22:04 回复