简单的linux系统学习笔记——12

一、系统进程

1.进程介绍

含义:进行中的程序,就叫进程。
父进程(ppid):监工
子进程(pid):干活

通过一个软件来读取我们的数据信息的过程再调用硬件进行相关文件的读取这个过程就是进程

程序员开发好的代码就叫代码文件
代码文件在计算机系统中运行起来就产生进程
												 |--→线程
									   --→子进程--↕
									   |		 |--→线程
									   |		 |--→线程
代码文件----→systemd----→派生----→父进程--↕
									   |
									   |
									   --→子进程
									   
系统在运行时先派生出一个父进程,父进程管理任务多少的子进程,子进程要同时干许多事就派生了线程

2.查看系统中的进程

[root@c7-100 ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 08:24 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 08:24 ?        00:00:00 [kthreadd]
带中括号[]的进程是系统默认的进程

3.系统进程分类

普通进程:进程出现后当任务执行完毕后,就会结束进程。
守护进程:进程出现后当任务执行完毕后,也会继续留在后台等待新的任务产生。

4.进程·生命周期

僵尸进程:子进程执行一半,突然挂掉了。占用系统资源,cpu、mem、磁盘、网络...
系统中systemd服务,它默认会自动清理僵尸进程,但是也有清理不掉的

孤儿进程:子进程执行一半,父进程挂掉了;孤儿进程没有父进程管理
systemd发现后,会接手子进程充当父进程

systemd服务进程号是【0】,是系统中一切进程的祖先,一般情况下,它可以管理系统中所有进程的生命周期

说明:
1,每个进程都有自己的父进程,父进程,进程号【PPID】
2,系统中所有进程都归systemd管理;

5.查看系统中进程的状态

[root@c7-100 ~]# ps -axu
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4  43976  4248 ?        Ss   08:24   0:01 /usr/lib/systemd/systemd --switched-root --system --deseria
root          2  0.0  0.0      0     0 ?        S    08:24   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   08:24   0:00 [kworker/0:0H]
root          5  0.0  0.0      0     0 ?        S    08:24   0:00 [kworker/u256:0]

二、查看系统进程命令

1.静态进程监控

ps -ef		//进程信息的简单查看
ps -axu		//进程信息的详细查看

参数介绍
	-a	//显示所有终端下执行的程序,不管从哪里登录的系统,只要执行了,就会显示出来
	-u	//显示进程所管理的用户信息
	-x	//显示所有程序,不以终端来区分,包含系统运行的进程
	-e	//显示系统中所有存在的程序信息,没有执行的也算
	-f	//当前用户的操作,所产生的进程;显示ppid和pid

2.动态进程监控

[root@c7-100 ~]# top
top - 09:58:24 up 2 days, 21:12,  3 users,  load average: 0.00, 0.01, 0.05
Tasks:  98 total,   1 running,  97 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 :   995672 total,   431192 free,   188836 used,   375644 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   577636 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                
   286 root      20   0       0      0      0 S  0.3  0.0   2:13.66 xfsaild/sda3                                                                                           
   780 root      20   0  273164   4872   3744 S  0.3  0.5   5:46.46 vmtoolsd                                                                                               
 94598 root      20   0       0      0      0 S  0.3  0.0   0:00.42 kworker/0:1                                                                                            
 95087 root      20   0  162068   2200   1556 R  0.3  0.2   0:00.02 top                                                                                                    
     1 root      20   0   52168   4400   2600 S  0.0  0.4   1:05.54 systemd                                                                                                
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.03 kthreadd                                                                                               
     4 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H                                                                                           
     6 root      20   0       0      0      0 S  0.0  0.0   0:02.91 ksoftirqd/0 

3.进程查看ps列信息释义

[root@c7-100 ~]# ps -axu
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.4  43976  4248 ?        Ss   08:24   0:01 /usr/lib/systemd/systemd --switched-root --system --deseria
root          2  0.0  0.0      0     0 ?        S    08:24   0:00 [kthreadd]

USER	//进程执行用户(每个进程都需要一个用户来管理)
PID		//子进程号
%CPU	//cpu占用的百分比(1核满负荷=100%,4核满负荷=400%)
%MEM	//内存占用百分比
VSZ		//虚拟内存的使用情况(单位kb)占用内存多少
RSS		//实际内存的使用情况(单位kb)使用多少内存
TTY		//连接主机的终端类型(?:系统自己内部运行的进程)
STAT	//进程运行的状态(Z R S)
START	//进程启动时间,什么时间启动,出现的
TIME	//执行进程过程中,占用cpu多长时间的资源
COMMAND	//进程执行的命令

4.状态和符号

R:运行状态,cpu正在执行的状态【running】
S:睡眠状态,睡眠等待任务【sleep】
Z:僵尸状态,【zombie】
T:停止状态,【stop】
   ctrl + z  //暂停运行
--------------------------------------------
D:不可中断的睡眠等待状态

s	//有小s表示父进程(控制进程)
<	//优先级较高的进程
N	//优先级较低的进程
+	//前台运行的进程
l	//line进程分了好多线程

查看线程命令(需先下载psmisc)
pstree -a  //显示启动的进程详细信息
pstree -c  //显示运行中的进程的父子关系树状图
睡眠300秒
[root@c7-100 ~]# sleep 300
^Z
[1]+  已停止               sleep 300

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。
[root@c7-100 ~]# jobs
[1]+  已停止               sleep 300

前台运行
[root@c7-100 ~]# fg 1
sleep 300
^Z
[1]+  已停止               sleep 300


后台运行
[root@c7-100 ~]# bg 1
[1]+ sleep 300 &

5.动态进程top命令

1.指定更新信息的时间
top -d 1 		//查看进程信息,1秒更新1次
	-i			//不显示闲置的进程或者僵尸进程
	-n 2		//更新两次动态信息,更新完成后停止
	-b 			//批次归档模式(每一次的结果都记录),搭配-n使用,可以将top结果输出到文件内
	
拓展
	M	//按照内存来排序
	P	//按照cpu使用率来排序
	b	//高亮显示running运行中的进程
	q	//退出动态查看模式
	h	//获取帮助信息

top命令显示的内容

[root@c7-100 ~]# top -n1
top - 11:17:19  up  2:52,     1 user,        load average: 0.00, 0.01, 0.05
	  系统时间   系统运行时间    当前登录用户数   平均负载情况;1分钟负载,5分钟负载,15分钟负载

举例:1分钟之内,(假设1核心)你使用了cpu30秒来执行进程,那么你的1分钟负载就是0.5
     		  (假设2核心)你使用了cpu30秒来执行进程,那么你的1分钟负载就是1.0
     
----------------------------------------------------------------------------- 
Tasks:  91 total,   1 running,  90 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
 0.0 us		//用户态:用户的操作所占用cpu的使用率(优先级最高的)
 0.0 sy		//内核态:系统的内容默认优先级,所占用cpu的使用率(内核态一般都是优先级较低的)
 0.0 ni		//优先执行的进程占用内存的百分比
 100.0 id	//cpu的空闲时长;100%的时间cpu都在空闲着(就是查询时cpu有没有被占用)
 0.0 wa		//系统cpu等待硬件资源处理进程任务的等待百分比(如果等待时间过长,考虑硬件原因)
 
 //中断:就是暂时让一个进程暂停让别的进程先执行
 0.0 hi		//表示硬中断占用cpu的百分比
 0.0 si		//软中断占用cpu的百分比
 0.0 st		//表示服务器运行了很多的虚拟机,虚拟主机的cpu所占用百分比

-----------------------------------------------------------------------------
KiB Mem :   995672 total,   750324 free,   138484 used,   106864 buff/cache
			最大内存		 空闲内存		  使用中的内存     缓存与缓冲
-----------------------------------------------------------------------------
KiB Swap:  2097148 total,  2097148 free,       0 used.   728496 avail Mem 
			最大交换分区内存	空闲的内存		使用中的内存	 
一般情况,在企业当中,尽量关闭它;
-----------------------------------------------------------------------------
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                 
     1 root      20   0   43976   4248   2556 S  0.0  0.4   0:01.98 systemd           
     ....
     
PID		//进程号
USER	//守护进程的用户
PR		//进程调度的优先级
NI		//进程调度的优先级(数值)
VIRT	//进程占用我们内存的建筑面积(建筑面积:运行进程的时候,需要占用的内存大小,具体是否使用不重要)
RES		//进程占用实际内存的大小(实用面积:运行进程真实占用内存大小)
SHR		//进程占用的共享内存(公摊面积:就是谁都可以使用的内存)
S		//进程状态
%CPU	//运行进程占用cpu的百分比
%MEM	//运行进程占用内存的百分比
TIME+	//运行进程,到此时此刻,一共占用cpu的时间
COMMAND //进程调用的命令

三、进程管理

1.kill杀死进程

1.语法
kill 参数 进程号

-------------------------------------------
查看kill的信号列表
[root@c7-100 ~]# 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 -s SIGKILL == kill -9 
-------------------------------------------
kill杀死进程有很多种方式,默认是【kill -15】
如果你kill一个进程杀不掉,【kill -9】强制杀死进程;
-------------------------------------------

[root@c7-100 ~]# sleep 30000 && rm -rf /* &
[1] 111354

查看后台运行的进程
[root@c7-100 ~]# jobs 
[1]+  运行中               sleep 30000 && rm -rf /* &

杀死进程
[root@c7-100 ~]# kill 111354
kill  -15 111354

-------------------------------------------
kill -1   进程号   #不杀死进程,而是重新加载进程的配置文件;
kill -9   进程号   #强制杀死、终止进程(强制关闭);
kill -15  进程号   #【默认的信号】终止指定的进程;(温柔的杀死进程,把事情做完再停止进程;)
注意:-15无法删掉以及处于停止状态的进程,因为进程停止无法把当前任务执行完所以杀不掉已经处于停止状态的进程。

2.pkill杀死进程(默认-15)

pkill 参数 进程名称
例:
[root@c7-100 ~]# ps -axu |grep sleep
root       1816  0.0  0.0 108052   356 pts/0    T    16:13   0:00 sleep 300000000
root       1867  0.0  0.0 112824   980 pts/0    R+   16:36   0:00 grep --color=auto sleep
[root@c7-100 ~]# pkill -9 sleep
[1]+  已杀死               sleep 300000000

12-完

  • 21
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值