• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
2022
博客园    首页    新随笔    联系   管理    订阅  订阅

进程管理

1. 进程的概述

操作系统程序运行,这个程序运行的过程就是进程?
程序:安装包=程序是指令和数据的有序集合》
静态   永久存在
进程:程序的运⾏过程=主机上面的一个过程》
动态   临时存在 

进程是程序在主机上面运行的一个过程   动态的概念   会随着程序的创建,运行,终止,消除而终止    临时

僵尸进程和孤儿进程

僵尸进程:进程生命周期结束了,但是PID未被回收

孤儿进程:父进程生命周期结束了,但是子进程未结束,子进程被系统进程接收

每个进程都有自己的代号  ID号  子进程  PID   父进程  PPID  

2. 进程的状态

ps		#显示进程的命令  

	a		#显示所有进程
	
	u		#显示有效的用户或者uid
	
	x		#显示没有终端
	
	aux

[root@m01 ~]# ps -aux | head
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  4.2  0.1  43540  3868 ?        Ss   00:51   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    00:51   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    00:51   0:00 [kworker/0:0]

	
	-e		#显示所有进程 
	
	-f		#显示用户PPID   
	
	-ef		#显示所有的进程及进程的PPID
	
[root@m01 ~]# ps -ef | head 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  2 00:51 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 00:51 ?        00:00:00 [kthreadd]
root          3      2  0 00:51 ?        00:00:00 [kworker/0:0]
root          4      2  0 00:51 ?        00:00:00 [kworker/0:0H]
root          5      2  0 00:51 ?        00:00:00 [kworker/u256:0]

USER 	#当前登录的进程用户        

PID 	#进程的ID号

PPID	#父进程的ID号

%CPU 	#CPU的使用率

%MEM   	#内存使用率

VSZ  	#虚拟内存集    进程占用虚拟内存的大小  

RSS 	#物理内存集    进程占用物理内存的大小

TTY  	#终端 

	?		#没有终端   后台运行
	
	tty1	#机器的终端  服务器的本地
	
	pts/0	#虚拟远程终端  

STAT 	#进程的状态

	S		#休眠的状态 
	
	R		#正在运行的状态 
	
	D		#无法中断的休眠状态 
	
	T		#停止状态
	
	Z		#僵尸状态
	
	s		#父进程 
	
	<		#优先级高
	
	N		#优先级低
	
	l		#多线程 
	
	+		#在前台运行 



START   	#进程的启动时间 

TIME 		#进程占用CPU的时间

COMMAND		#执行的指令或者命令

	[]		#内核运行的  
	
	无[]		#用户运行的  


动态显示进程状态

top     htop

[root@mm ~]# yum install  -y  htop

[root@mm ~]# top 
top - 09:33:58 up 23:31,  2 users,  load average: 0.24, 0.10, 0.07
Tasks: 113 total,   1 running, 112 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,   155648 free,   363844 used,  1508596 buff/cache
KiB Swap:  2097148 total,  2069756 free,    27392 used.   974036 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND               


平均负载:


# CPU加压工具
stress --cpu [需要加压的系统核心数] --timeout [加压的时间]

# CPU 性能加压工具
## 添加epel源(epel源主要用来安装红帽系列操作系统附加软件)
yum install stress -y

# CPU 性能分析工具
yum install sysstat -y

mpstat -P ALL 3   

# 进程性能分析⼯具
pidstat -u 1 5  


top - 09:33:58 up 23:31,  2 users,  load average: 0.24, 0.10, 0.07


09:33:58	#当前系统时间

up 23:31	#系统运行时间 

2 users		#登录用户的数量  连接终端的数量 

load average: 0.24, 0.10, 0.07			#系统平均负载时间   1  5  15 分钟的平均负载 
 
 
Tasks: 125 total,   1 running, 124 sleeping,   0 stopped,   0 zombie


任务:

113 total,		#总共有125个进程

1 running		#一个在运行状态

124 sleeping	#112休眠状态  S  

0 stopped		#0个停止状态

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的时间百分比  	

0.0 us		#用户态  用户所占用的CPU的时间百分比

0.0 sy		#系统态  系统所占用的CPU的时间百分比

0.0 ni		#在单位时间内优先使用CPU所占时间百分比

100.0 id	#空闲状态所占用的CPU的时间百分比

0.0 wa		#IO等待所占用的CPU的时间百分比

0.0 hi		#硬件中断

0.0 si		#软件中断

0.0 st		#宿主机的监控程序所窃取的虚拟机的CPU的时间百分比 


KiB Mem :  2028088 total,   155648 free,   363844 used,  1508596 buff/cache


物理内存     总的 				剩余的        已使用的       缓存和缓冲中的内存 



KiB Swap:  2097148 total,  2069756 free,    27392 used.   974036 avail Mem 

虚拟内存 


PID 		#进程的ID号


USER		#运行的身份  用户       

PR  		#优先级  20

NI  		#nice值    跟PR 相差 20个数    值越低,优先级就越高 

VIRT    	#所占用的虚拟内存的大小

RES  		#所占用的物理内存的大小  

SHR 		#共享内存 

S 			#进程的状态 

%CPU 		#占用CPU的百分比

%MEM 		#占用内存的百分比      

TIME+ 		#CPU的运行时间

COMMAND		#运行的指令或者命令

 top命令的内部指令

h		#帮助 

q		#退出

P		#以CPU的占用大小进行排序

M		#以内存的占用大小进行排序

1		#显示所有CPU的状态 


top选项:

[root@mm ~]# top  -d  1		#设置刷新时间


[root@mm ~]# top  -d  1  -p 1	#查看某个进程ID的进程状态 


[root@mm ~]# top  -d  1  -u  postfix	#显示指定运行用户的进程状态 


[root@mm ~]# free  -m
              total        used        free      shared  buff/cache   available
Mem:           1980         265         907          12         807        1114
Swap:          2047          29        2018


[root@mm ~]# yum install  -y  glances


[root@mm ~]# glances 

3. 终止进程
kill		#管理系统中的信号输出 

[root@mm ~]# kill  -l
 1) SIGHUP	 2) SIGINT	 3) SIGQUIT	 4) SIGILL	 5) SIGTRAP
 6) SIGABRT	 7) SIGBUS	 8) SIGFPE	 9) SIGKILL	10) SIGUSR1
11) SIGSEGV	12) SIGUSR2	13) SIGPIPE	14) SIGALRM	15) SIGTERM
16) SIGSTKFLT	17) SIGCHLD	18) SIGCONT	19) SIGSTOP	20) SIGTSTP
21) SIGTTIN	22) SIGTTOU	23) SIGURG	24) SIGXCPU	25) SIGXFSZ

1		#重新加载配置   进程pid的不变  


2		#终止信号  ctrl + c


9		#终止进程   强制终止 


15		#默认信号  终止进程   可加可不加 


18		#让暂停的进程继续运行


20		#ctrl + z  将进程暂停 


[root@mm ~]# yum install  -y  nginx 

[root@mm ~]# systemctl  start  nginx
[root@mm ~]# ps aux | grep nginx
root      13063  0.0  0.1 120796  2096 ?        Ss   10:36   0:00 nginx: master process /usr/sbin/nginx
nginx     13064  0.2  0.1 121180  3128 ?        S    10:36   0:00 nginx: worker process


[root@mm ~]# kill  -1  13063
[root@mm ~]# ps aux | grep nginx
root      13063  0.0  0.2 121452  5248 ?        Ss   10:36   0:00 nginx: master process /usr/sbin/nginx
nginx     13070  0.0  0.1 121876  3836 ?        S    10:37   0:00 nginx: worker process

[root@mm ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      13063/nginx: master

[root@mm ~]# ps  aux |grep  [t]op
root      13115  0.0  0.1 161988  2212 pts/1    S+   10:41   0:00 top
[root@mm ~]# kill -2 13115
[root@mm ~]# ps  aux |grep  [t]op
[root@mm ~]# 


[root@mm ~]# kill  -9  13063

[root@mm ~]# kill 13141
[root@mm ~]# ps  aux |grep  [t]op
root      13144  0.0  0.1 161984  2212 pts/1    S+   10:44   0:00 top
[root@mm ~]# kill -15 13144

kill		#根据进程ID去终止进程的   进程不存在时,会进行提示  


#根据名称终止进程   精确匹配 


[root@mm ~]# killall   top

[root@mm ~]# killall  nginx


[root@mm ~]# killall  nginx		#进程不存在时,会提示 
nginx: no process found


[root@mm ~]# ps  aux | grep  [v]im
root      13264  0.0  0.2 149168  4972 pts/0    S+   10:53   0:00 vim 123.txt
root      13265  0.1  0.2 149168  4972 pts/1    S+   10:53   0:00 vim 123.log
[root@mm ~]# killall  vim



pkill		#根据进程名称终止   终止进程不会提示    模糊杀手   


[root@mm ~]# ps  aux | grep  [t]op
root      13278  0.0  0.1 161988  2216 pts/0    S+   10:56   0:00 top
root      13279  0.1  0.1 122396  2112 pts/1    S+   10:56   0:00 htop
[root@mm ~]# pkill   top
[root@mm ~]# ps  aux | grep  [t]op
[root@mm ~]# 

[root@mm ~]# ps  aux |grep  sh
root       6935  0.0  0.0 112756  1276 ?        Ss   Aug03   0:00 /usr/sbin/sshd -D

[root@mm ~]# pkill  sh  


#以树形结构显示进程状态 

[root@mm ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─auditd───{auditd}
        ├─crond───crond───sh───ntpdate
        ├─dbus-daemon
        ├─firewalld───{firewalld}
     
4. 管理进程的后台

[root@mm ~]# tar  czf  etc.tar.gz     /usr/  /etc/  /var  
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets


Connection closed.

Disconnected from remote host(虚拟机-10.0.0.100) at 11:13:33.

Type `help' to learn how to use Xshell prompt.
[C:\~]$ 

Connecting to 10.0.0.100:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Tue Aug  4 11:12:44 2020 from 10.0.0.1
[root@mm ~]# ll
total 35408
-rw-r--r-- 1 root root 36257792 Aug  4 11:13 etc.tar.gz
[root@mm ~]# ll -h
total 35M
-rw-r--r-- 1 root root 35M Aug  4 11:13 etc.tar.gz
[root@mm ~]# tar  czf  etc.tar.gz     /usr/  /etc/  /var  
tar: Removing leading `/' from member names
tar: Removing leading `/' from hard link targets
^C
[root@mm ~]# ll -h
total 128M
-rw-r--r-- 1 root root 104M Aug  4 11:14 etc.tar.gz
[root@mm ~]# 

#将程序放入到后台运行


1.  nohup   &  

[root@mm ~]# nohup   ping  www.baidu.com  &
[1] 13517
[root@mm ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@mm ~]#

[root@mm ~]# nohup   ping  www.baidu.com  &
[1] 13592
[root@mm ~]# nohup: ignoring input and appending output to ‘nohup.out’

[root@mm ~]# 
[root@mm ~]# 
[root@mm ~]# ps  aux |grep  13592
root      13592  0.0  0.0 149968  1988 pts/1    S    11:17   0:00 ping www.baidu.com
root      13594  0.0  0.0 112708   976 pts/1    R+   11:17   0:00 grep --color=auto 13592


[root@mm ~]# jobs		#显示当前窗口的后台进程 
[1]+  Running                 nohup ping www.baidu.com &

[root@localhost ~]# bg %2 # 让作业2在后台运⾏
[2]+ sleep 4000 &

[root@localhost ~]# fg %1 # 将作业1调回到前台

2. screen		#后台管理程序 

#列出screen后台运行的程序

[root@mm ~]# screen   -list
No Sockets found in /var/run/screen/S-root.

[root@mm ~]# 

[root@mm ~]# screen  -S     vim		#打开一个新的窗口 并指定窗口名称 
[detached from 13659.vim]

[root@mm ~]# screen  -list
There is a screen on:
	13659.vim	(Detached)
1 Socket in /var/run/screen/S-root.


[root@mm ~]# screen   -r  vim		#或者通过id号 


[root@mm ~]# screen   -xr  vim		#实时监控窗口的操作



[detached from 13659.vim]


ctrl +  a  + d   #临时退出 

exit	#真正退出 

5. 系统平均负载
[root@mm ~]# top
top - 11:54:48 up 1 day,  1:52,  3 users,  load average: 0.00, 0.01, 0.05


[root@mm ~]# w
 11:54:59 up 1 day,  1:52,  3 users,  load average: 0.00, 0.01, 0.05


[root@mm ~]# uptime
 11:55:09 up 1 day,  1:53,  3 users,  load average: 0.00, 0.01, 0.05



1分钟    5分钟    15分钟   系统的平均负载 

平均负载跟系统CPU的使用率没有太大关系


在单位时间内,系统正在运行中的进程数或者不可中断的进程数量   进程的活跃数量 


跟CPU的核心数有关系 


当负载为2的时候    

核心数为4       50% 

核心数为2		100% 

核心数为1       200%



当1分钟的值小于5分钟和15分钟的时候   说明你之前的平均负载过高,当前正在降低  

当1分钟跟5分钟和15分钟的值很近的时候,平均负载很稳定  

当1分钟的值大于5分钟和15分钟的时候,说明现在的负载正在慢慢的变大   


当值达到70%   就要开始分析问题  
```

```

posted @ 2021-03-14 17:47  博客之记  阅读(32)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3