linux 进程管理

进程的概述

程序运行,这个程序运行的过程就是进程?
系统会给进程分配了 内存空间
分配了安全属性 运行的身份和权限
分配了系统的资源 文件描述符 进程描述符 网络端口 ID号 PID PPID
系统会记录进程的运行中的状态 STATAE
进程和程序有什么区别
程序是指令和数据的有序集合 静态的概念 永久存在的
进程是程序在主机上面运行的一个过程 动态的概念 会随着程序的创建,运行,终止,消除而终止 临时
进程是有生命周期
进程的运行过程:
用户运行了一个程序,系统会给进程分配任务,进程会通过fork一个子进程,子进程会继承父进程的衣钵,子进程处理具体的任务,父进程就会进入等待状态,子进程任务结束,回来向父进程交任务,子进程正常退出
子进程在执行任务时,父进程因为意外原因退出了,那么子进程就会变成无人管理,就是僵尸进程
每个进程都有自己的代号 ID号 子进程 PID 父进程 PPID

进程的状态


ps 显示进程的命令  静态显示:  
	a		# 显示所有进程
	u		# 显示有效的用户或者uid
	x		# 显示没有终端
	aux		# 显示所有的进程
	
	-e		# 显示所有进程 
	-f		# 显示用户PPID   
	-ef		# 显示所有的进程及进程的PPID

# 查看所有进程
[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          2  0.0  0.0      0     0 ?        S    08:26   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    08:26   0:00 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   08:26   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    08:26   0:00 [kworker/u256:0]
root          7  0.0  0.0      0     0 ?        S    08:26   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    08:26   0:00 [rcu_bh]


进程每列的作用:
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(可以用鼠标点需要安装) glances
[root@qls ~]# yum install  -y  htop

# 动态显示进程状态
[root@localhost ~]# top
top - 15:01:30 up  6:34,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  95 total,   1 running,  94 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 :  1863224 total,  1340596 free,   146024 used,   376604 buff/cache
KiB Swap:  1048572 total,  1048572 free,        0 used.  1535600 avail Mem 
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                          
  7749 root      20   0  149968   1984   1500 S  0.3  0.1   0:02.56 ping                                                             
     1 root      20   0  125296   3708   2564 S  0.0  0.2   0:00.95 systemd                                                          
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kthreadd 

top第一行:
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 分钟的平均负载 
 
tpo第二行:
Tasks: 113 total,   1 running, 112 sleeping,   0 stopped,   0 zombie
任务:
113 total,						# 总共有113个任务 
1 running						# 一个在运行状态
112 sleeping					        # 112休眠状态  S  
0 stopped						# 0个停止状态
0 zombie						# 0个在僵尸状态 

top第三行:
%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							# 硬中断所占用的CPU的时间百分比
0.0 si							# 软中断所占用的CPU的时间百分比
0.0 st							# 宿主机的监控程序所窃取的虚拟机的CPU的时间百分比 

top第四行:
KiB Mem :  2028088 total,   155648 free,   363844 used,  1508596 buff/cache
物理内存     总的 				剩余的        已使用的       缓存和缓冲中的内存 
KiB Swap:  2097148 total,  2069756 free,    27392 used.   974036 avail Mem 

top第五行:
虚拟内存(同物理内存差不多) 

top第六列:
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选项:
 top  -d  1			 # 设置刷新时间
 top  -d  1  -p 1	 	 # 查看某个进程ID的进程状态 
 top  -d  1  -u  postfix	 # 显示指定运行用户的进程状态 

终止进程三兄弟

kill 	# 管理系统中的信号输出 
kill	# 根据进程ID去终止进程的   进程不存在时,会进行提示

[root@localhost ~]# 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
26) SIGVTALRM	27) SIGPROF	28) SIGWINCH	29) SIGIO	30) SIGPWR
31) SIGSYS	34) SIGRTMIN	35) SIGRTMIN+1	36) SIGRTMIN+2	37) SIGRTMIN+3
38) SIGRTMIN+4	39) SIGRTMIN+5	40) SIGRTMIN+6	41) SIGRTMIN+7	42) SIGRTMIN+8
43) SIGRTMIN+9	44) SIGRTMIN+10	45) SIGRTMIN+11	46) SIGRTMIN+12	47) SIGRTMIN+13
48) SIGRTMIN+14	49) SIGRTMIN+15	50) SIGRTMAX-14	51) SIGRTMAX-13	52) SIGRTMAX-12
53) SIGRTMAX-11	54) SIGRTMAX-10	55) SIGRTMAX-9	56) SIGRTMAX-8	57) SIGRTMAX-7
58) SIGRTMAX-6	59) SIGRTMAX-5	60) SIGRTMAX-4	61) SIGRTMAX-3	62) SIGRTMAX-2
63) SIGRTMAX-1	64) SIGRTMAX	

kill 选项: 
1		# 重新加载配置   进程pid的不变  
2		# 终止信号  ctrl + c
9		# 终止进程   强制终止 
15		# 默认信号  终止进程   可加可不加 
18		# 让暂停的进程继续运行
20		# ctrl + z  将进程暂停 

# 查看网络通信服务信息
[root@localhost ~]# 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:22              0.0.0.0:*               LISTEN      6889/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      7134/master         
tcp6       0      0 :::22                   :::*                    LISTEN      6889/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      7134/master 


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

[root@localhost ~]# killall vim
[root@localhost ~]# vim test
Vim: Caught deadly signal TERM

Vim: Finished.
Terminated

[root@localhost ~]# killall -9 ping     # 强制终止进程
[root@localhost ~]# ping baidu.com &> /dev/null
Killed

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


pkill	# 根据进程名称终止   终止进程不会提示    模糊杀手
        # 凡事相关的字符串通通杀死(不建议使用)

pstree        # 以树形结构显示进程状态
[root@localhost ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
        ├─VGAuthService
        ├─agetty
        ├─auditd───{auditd}
        ├─crond
        ├─dbus-daemon
        ├─firewalld───{firewalld}
        ├─master─┬─pickup
        │        └─qmgr
        ├─polkitd───6*[{polkitd}]
        ├─rsyslogd───2*[{rsyslogd}]
        ├─screen───bash
        ├─sshd─┬─sshd───bash───pstree
        │      └─sshd───bash
        ├─systemd-journal
        ├─systemd-logind
        ├─systemd-udevd
        ├─tuned───4*[{tuned}]
        └─vmtoolsd───{vmtoolsd}

管理进程的后台

#  将程序放入到后台运行
nohup   &

# 将进程ping命令放入后台暂停 进入休眠状态
[root@localhost ~]# nohup ping aliyun.com & 
[1] 7367
[root@localhost ~]# nohup: ignoring input and appending output to ‘nohup.out’
[root@localhost ~]# ps 7367
   PID TTY      STAT   TIME COMMAND
  7367 pts/0    S      0:00 ping aliyun.com

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

# 将后台进程放到前台运行
[root@localhost ~]# fg %1
nohup ping baidu.com

# 将暂停在后台的程序继续在后台运行    输出还是输出到屏幕上面 
[root@localhost ~]# bg %2
[2]+ ping baidu.com &
[root@localhost ~]# 64 bytes from 220.181.38.148 (220.181.38.148): icmp_seq=5 ttl=128 time=28.6 ms



screen	# 后台管理程序
# 列出screen后台运行的程序
screen -list

# 打开一个新的窗口 并指定名称
[root@localhost ~]# screen -S 'hello world'

# 通过id或则名称进入新窗口
[root@localhost ~]# screen -r test

# 进入观看演示
[root@localhost ~]# screen -xr test

ctrl +  a  + d         # 临时退出 
exit	               # 真正退出 

系统平均负载


# 查看系统平均负载
[root@localhost ~]# uptime
 16:27:00 up 41 min,  1 user,  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 @ 2020-08-04 16:29  nick_xm  阅读(150)  评论(0编辑  收藏  举报