进程的介绍及相关命令

news2024/11/28 6:50:15

首先,先了解一下计算机五大性能的命令

cpu     top   w

内存    top   free

硬盘剩余   df

硬盘读写性能   iostat

网络带宽    iftop

一,进程与程序

1,什么是程序 :

硬盘上躺着,执行特点任务的一串代码 

2,什么是进程:

加载到内存中运行,进程是程序的副本 程是有生命周期的,程序没有

3,进程特点

  • 进程ID(Process ID,PID)号码被用来标记各个进程

  • UID、GID语境决定对文件系统的存取和访问权限

  • 通常从执行进程的用户来继承

  • 存在生命周期

  • 都由其父进程创建

4,进程权限的问题

基于UID、GID语境决定对文件系统的存取和访问权限

不同用户对进程的查看,写,执行的权限不同

生产环境中:用chmod改权限  或者acl访问控制列表

5,如何看进程号

pstree   -p

以树形结构列出进程信息      -p 显示PID

二,进程,线程,协程

(一)进程

1,定义

进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。进程是一种抽象的概念,从来没有统一的标准定义。

2,组成

进程一般由程序、数据集合和进程控制块三部分组成。

程序用于描述进程要完成的功能,是控制进程执行的指令集;
数据集合是程序在执行时所需要的数据和工作区;
程序控制块(Program Control Block,简称PCB),包含进程的描述信息和控制信息,是进程存在的唯一标志。

3,简言之

一个进程拖多个线程  ,进程是老板,只接受任务,不处理任务,线程是干活得

一个进程最少一个线


(二)线程

1,定义

线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。

一个进程可以有一个或多个线程,各个线程之间共享程序的内存空间(也就是所在进程的内存空间)

2,组成

一个标准的线程由线程ID、当前指令指针(PC)、寄存器和堆栈组成

3,线程作用

减少硬件资源消耗

进程切换

相同资源的存储

(三)协程

手写脚本的方式,哪个线程先执行

例题

问:如何确定一个程序是多线程 还是 单线程

答:先pstree看进程号,

去到  /proc/1103

看出sshd   为单线程

为什么要区分一个程序是多线程还是单线程

多线程高并发,可以应对复杂场景

三,进程 使用 内存 的问题

(一)常见问题

内存泄漏:Memory Leak

指程序中用malloc或new申请了一块内存,但是没有用free或delete将内存释放,导致这块内存一直处于占用状态

内存溢出:Memory Overflow

指程序申请了10M的空间,但是在这个空间写入10M以上字节的数据,就是溢出,类似红杏出墙

内存不足:OOM

oom 会经常看到 out of meory 内存不足

(二)oom  常见使用场景

在java程序中比较常见

原因:

给应用分配内存太少:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。

应用用的太多,并且用完没释放,浪费了。此时就会造成内存泄露或者内存溢出。

使用的解决办法:

1,限制java进程的max heap,并且降低java程序的worker数量,从而降低内存使用

2,给系统增加swap空间

3,pmap   进程id  (看哪个块占内存特别大,有可能这个块的代码开发写错了) )

pmap   进程id
[root@localhost ~]#pmap 1143
1143:   /usr/sbin/sshd -D
0000555bd6b0f000    800K r-x-- sshd
0000555bd6dd6000     16K r---- sshd
0000555bd6dda000      4K rw--- sshd
0000555bd6ddb000     36K rw---   [ anon ]
0000555bd7603000    132K rw---   [ anon ]

四,进程状态

(一)进程的基本状态

  • 创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态

  • 就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行

  • 执行状态:进程处于就绪状态被调度后,进程进入执行状态

  • 阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。在满足请求时进入就绪状态等待系统调用

  • 终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行

(二)状态之间转换六种情况

运行——>就绪

1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;

2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态

就绪——>运行

运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU

运行——>阻塞

正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求

阻塞——>就绪

进程所等待的事件已经发生,就进入就绪队列以下两种状态是不可能发生的:

阻塞——>运行

即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取

就绪——>阻塞

就绪态根本就没有执行,谈不上进入阻塞态

(三)进程更多的状态

  • 运行态:running

  • 就绪态:ready

  • 睡眠态:分为两种,可中断:interruptable,不可中断:uninterruptable

  • 停止态:stopped,暂停于内存,但不会被调度,除非手动启动

  • 僵死态:zombie,僵尸态,结束进程,父进程结束前,子进程不关闭,杀死父进程可以关闭僵死态 的子进程

这边重点介绍一下僵尸态

1,僵尸进程/僵尸态具体含义

进程结束 父进程 会回收子进程的硬件资源, 子进程如果出现意外关闭, 父进程无感知就不会收回资源,人为关闭父进程, 资源不会回收产生僵尸进程

2,实验模拟僵尸进程

[root@centos8 ~]#bash
[root@centos8 ~]#echo $BASHPID
1809
[root@centos8 ~]#echo $PPID
1436
#将父进程设为停止态
[root@centos8 ~]#kill -19 1436
#杀死子进程,使其进入僵尸态
[root@centos8 ~]#kill -9 1809
[root@centos8 ~]#ps aux #可以看到上面图示的结果,STAT为Z,表示为僵尸态
#方法1:恢复父进程
[root@centos8 ~]#kill -18 1436 
#方法2:杀死父进程
[root@centos8 ~]#kill -9 1436
#再次观察,可以僵尸态的进程不存在了
[root@centos8 ~]#ps aux

     也可以    pstree  -p   | grep bash   
 

3,如何结束僵尸进程

重启

生产环境下:僵尸进程是 父进程意外死了,本身就是事故,僵尸进程本身 其实不太占内存

五,进程之间通讯

1,同一主机

pipe 管道,单向传输             cmd1  |  cmd 2
socket   套接字文件,双工通信
Memory-maped file   文件映射,将文件中的一段数据映射到物理内存,多个进程共享这片内存
shm shared memory 共享内存
signal 信号
Lock   对资源上锁,如果资源已被某进程锁住,则其它进程想修改甚至读取这些资源,都将被阻塞,直到锁被打开
semaphore 信号量,一种计数器


2,不同主机

socket=IP和端口号

RPC remote procedure call   远程调用
 

六,进程优先级

在 Linux 系统中,表示进程优先级的有两个参数:Priority 和 Nice

(一)优先级规则

PRI (最终值) = PRI (原始值) + NI

PRI (最终值) 数值越小代表该进程越优先被 CPU 处理

PRI (原始值)数值越大,优先级越高,PRI(原始值)我们调不了,所以我们不必理会

NI 值越 小,该进程就越优先被 CPU 处理
注意;NI范围   -20到+19

(二)进程优先级相关命令

1,查看优先级

ps    命令(process  state)

axo  都是选项  o指属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

2,更改优先级

[root@centos8 ~]#nice -n -10 ping 127.0.0.1
[root@centos7 ~]#renice -n -20 2118

七,进程分类

(一)操作系统分类:

  • 协作式多任务:早期 windows 系统使用,即一个任务得到了 CPU 时间,除非它自己放弃使用CPU ,否则将完全霸占 CPU ,所以任务之间需要协作——使用一段时间的 CPU ,主动放弃使用

  • 抢占式多任务:Linux内核,CPU的总控制权在操作系统手中,操作系统会轮流询问每一个任务是否需要使用 CPU ,需要使用的话就让它用,不过在一定时间后,操作系统会剥夺当前任务的 CPU 使用权,把它排在询问队列的最后,再去询问下一个任务

(二)进程类型

  • 守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程

  • 前台进程:跟终端相关,通过终端启动的进程

注意:两者可相互转化

(三)按进程资源使用的分类

  • CPU-Bound:CPU 密集型,非交互

  • IO-Bound:IO 密集型,交互

八,进程相关命令

(一)ps

1,含义

ps 即 process state     查看静态的进程统计信息

2,选项

  • ps aux" 可以查看系统中所有的进程;

  • "ps -le" 可以查看系统中所有的进程,而且还能看到进程的父进程的 PID 和进程优先级;

  • "ps -l" 只能看到当前 Shell 产生的进程;

常用选项

  • a:显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将示系统中所有的进程信息。

  • u:使用以用户为主的格式输出进程信息

  • x:显示当前用户在所有终端下的进程信息。

  • -e:显示系统内的所有进程信息。

  • -l:使用长(Long)格式显示进程信息。

  • -f:使用完整的(Full)格式显示进程信

  • k|--sort 属性 对属性排序,属性前加 - 表示倒序 ps aux k -%cpu

  • o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

3,ps 不同命令表示的具体信息

ps aux

表头含义
USER该进程是由哪个用户产生的。
PID进程的 ID。
%CPU该进程占用 CPU 资源的百分比,占用的百分比越高,进程越耗费资源。
%MEM该进程占用物理内存的百分比,占用的百分比越高,进程越耗费资源。
VSZ该进程占用虚拟内存的大小,单位为 KB。
RSS该进程占用实际物理内存的大小,单位为 KB。
TTY该进程是在哪个终端运行的。其中,tty1 ~ tty7 代表本地控制台终端(可以通过 Alt+F1 ~ F7 快捷键切换不同的终端),tty1~tty6 是本地的字符界面终端,tty7 是图形终端。pts/0 ~ 255 代表虚拟终端,一般是远程连接的终端,第一个远程连接占用 pts/0,第二个远程连接占用 pts/1,依次増长。?代表和终端无关,系统进程
STAT

进程状态。常见的状态有以下几种:

-D:不可被唤醒的睡眠状态,通常用于 I/O 情况。

-R:该进程正在运行。

-S:该进程处于睡眠状态,可被唤醒。

-T:停止状态,可能是在后台暂停或进程处于除错状态。

-W:内存交互状态(从 2.6 内核开始无效)。

-X:死掉的进程(应该不会出现)。

-Z:僵尸进程。进程已经中止,但是还是占用硬件资源。

-<:高优先级(以下状态在 BSD 格式中出现)。

-N:低优先级。

-L:被锁入内存。

-s:包含子进程。

-l:多线程(小写 L)。

-+:位于后台。

START该进程的启动时间。
TIME该进程占用 CPU 的运算时间,注意不是系统时间。
COMMAND产生此进程的命令名

ps -ef

表头含义
F进程标志,说明进程的权限,常见的标志有两个: 1:进程可以被复制,但是不能被执行;4:进程使用超级用户权限;
S进程状态。具体的状态和"psaux"命令中的 STAT 状态一致;
UID运行此进程的用户的 ID;
PID进程的 ID;
PPID父进程的 ID;
C该进程的 CPU 使用率,单位是百分比;
PRI进程的优先级,数值越小,该进程的优先级越高,越早被 CPU 执行;系统定义不可以人为修改
NI进程的优先级,数值越小,该进程越早被执行;可以人为修改
ADDR该进程在内存的哪个位置;
SZ该进程占用多大内存;
WCHAN该进程是否运行。"-"代表正在运行;
TTY该进程由哪个终端产生;
TIME该进程占用 CPU 的运算时间,注意不是系统时间;
CMD产生此进程的命令名;

4,ps 实际运用

① 过滤僵尸进程

解释 :

ps  aux    可以查看系统中所有的进程

grep  -v   grep    用了grep程序,会有grep 进程  排除掉

grep  Z        ps  aux后重看的所有内容中stat 表示进程状态(Z表示僵尸状态)

②找到利用率最高的进程
找到cpu 利用率最高的进程

找到内存利用率最高的进程

看自己相看的进程的属性并排序

③找到未知进程的执行程序文件路径

可能存在的场景:

中病毒案例,现在中病毒了造成内存(cpu或者其他)占用率过高,通过ps  aux 命令可以找到

如果kill  杀掉他,过段时间又会起来,可以根据pid 号,去到   /proc/pid号/exe  

找到程序的绝对路径,删除掉

也可以在病毒程序的绝对路径下,手写一个同名的可执行程序(治标不治本)

(二)prtstat查看进程信息

查看进程信息

prtstat  直接加pid 号

(三)top

1,含义

任务管理器    动态查看进程信息

2,选项

  • -d 秒数:指定 top 命令每隔几秒更新。默认是 3 秒;

  • -b:使用批处理模式输出。一般和"-n"选项合用,用于把 top 命令重定向到文件中;

  • -n 次数:指定 top 命令执行的次数。一般和"-"选项合用;

  • -p 进程PID:仅查看指定 ID 的进程;

  • -s:使 top 命令在安全模式中运行,避免在交互模式中出现错误;

  • -u 用户名:只监听某个用户的进程;

3,top 命令显示窗口里 交互操作

  • ? 或 h:显示交互模式的帮助;

  • c:按照 CPU 的使用率排序,默认就是此选项;

  • M:按照内存的使用率排序;

  • N:按照 PID 排序;

  • T:按照 CPU 的累积运算时间排序,也就是按照 TIME+ 项排序;

  • k:按照 PID 给予某个进程一个信号。一般用于中止某个进程,信号 9 是强制中止的信号;

  • r:按照 PID 给某个进程重设优先级(Nice)值;

  • q:退出 top 命令;

4,top 命令显示窗口里   改变首部信息显示

uptime信息:l命令

tasks及cpu信息:t命令

cpu分别显示:1 (数字)

memory信息:m命令

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:W

5,top 命令    内容的具体介绍

top 命令的输出内容是动态的,默认每隔 3 秒刷新一次。命令的输出主要分为两部分:

①第一部分是前五行

显示的是整个系统的资源使用状况,我们就是通过这些输出来判断服务器的资源使用状态的;

第一行为任务队列信息,具体内容如表 所示。
内 容说 明
12:26:46系统当前时间
up 1 day, 13:32系统的运行时间.本机己经运行 1 天 13 小时 32 分钟
2 users当前登录了两个用户
load average: 0.00,0.00,0.00 1 分钟、5 分钟、15 分钟的cpu使用情况,如果有4核,理论数字可以到3.99
第二行为进程信息,具体内容如表
内 容说 明
Tasks: 95 total系统中的进程总数
1 running正在运行的进程数
94 sleeping睡眠的进程数
0 stopped正在停止的进程数
0 zombie僵尸进程数。如果不是 0,则需要手工检查僵尸进程
第三行为 CPU 信息,具体内容如表
内 容说 明
Cpu(s): 0.1 %us用户模式占用的 CPU 百分比 个人用户开启的进程占用的 cpu 率
0.1%sy系统模式占用的 CPU 百分比
0.0%ni改变过优先级的用户进程占用的 CPU 百分比
99.7%id空闲 CPU 占用的 CPU 百分比
0.1%wa等待输入/输出的进程占用的 CPU 百分比 1
0.0%hi硬中断请求服务占用的 CPU 百分比
0.1%si软中断请求服务占用的 CPU 百分比
0.0%stst(steal time)意为虚拟程序占用 cpu 时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
第四行为物理内存信息,具体内容如表buff cache
内 容说 明
Mem: 625344k total物理内存的总量,单位为KB
571504k used己经使用的物理内存数量
53840k&ee空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
65800k buffers作为缓冲的内存数量
第五行为交换分区(swap)信息,如表
内 容说 明
Swap: 524280k total交换分区(虚拟内存)的总大小
Ok used已经使用的交换分区的大小
524280k free空闲交换分区的大小
409280k cached作为缓存的交换分区的大小

② 第二部分从第六行开始

显示的是系统中进程的信息

  • PID:进程的 ID。

  • USER:该进程所属的用户。

  • PR:优先级,数值越小优先级越高。

  • NI:优先级,数值越小、优先级越高。

  • VIRT:该进程使用的虚拟内存的大小,单位为 KB。

  • RES:该进程使用的物理内存的大小,单位为 KB。

  • SHR:共享内存大小,单位为 KB。

  • S:进程状态。

  • %CPU:该进程占用 CPU 的百分比。

  • %MEM:该进程占用内存的百分比。

  • TIME+:该进程共占用的 CPU 时间。

  • COMMAND:进程的命令名。

6,top 生产环境作用

通过 top 命令的第一部分就可以判断服务器的健康状态。如果 1 分钟、5 分钟、15 分钟的平均负载高于 1,则证明系统压力较大。如果 CPU 的使用率过高或空闲率过低,则证明系统压力较大。如果物理内存的空闲内存过小,则也证明系统压力较大。

这时,我们就应该判断是什么进程占用了系统资源。如果是不必要的进程,就应该结束这些进程;如果是必需进程,那么我们该増加服务器资源(比如増加虚拟机内存),或者建立集群服务器。

缓冲(buffer)和缓存(cache)的区别:

  • 缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。

  • 缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。

简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。

(四)pgrep查看指定的进程

查看指定的进程

  • -U 指定用户

  • -l: 显示进程名

  • -a: 显示完整格式的进程名

  • -P pid: 显示指定进程的子进程

问: 我想知道当前系统root  一共运行了多少个进程?

ps  aux | grep   -v   grep  |  grep  root  |  wc  - l

pgrep  -U   root  |  wc  -l

(五)pidof已知程序名不知道pid号

[root@localhost ~]#pidof nginx
#查看  nginx进程的 pid 号
22142 22002

(六)pstree命令进程树

以树形结构列出进程信息

1,常用选项

-a    显示启动每个进程对应的完整指令,包括启动进程的路径、参数等
-p 显示PID
-T 不显示线程thread,默认显示线程
-u 显示用户切换
-H pid 高亮显示指定进程及其前辈进程

2,常用命令表达形式

[root@test ~]# pstree  1
#查看进程号为1的进程
   
[root@test ~]# pstree lisi
#查看用户lisi的进程

[root@test ~]# pstree -pH 1780
#高亮

(七)lsof  

1,含义

lsof 命令,“list opened files”的缩写,直译过来,就是列举系统中已经被打开的文件。通过 lsof 命令,我们就可以根据文件找到对应的进程信息,也可以根据进程信息找到进程打开的文件。

2,选项

选项功能
-c 字符串只列出以字符串开头的进程打开的文件。
+d 目录名列出某个目录中所有被进程调用的文件。
-u 用户名只列出某个用户的进程打开的文件。
-p pid列出某个 PID 进程打开的文件。

3,误删文件找回

前提有别人在用

lsof |grep delete
cupsd      1144(pid)           root   10r      REG              253,0      2337    9381005 /etc/passwd+ (deleted)

ll /proc/1144/fd
fd 是文件描述符
[root@localhost data]#ll /proc/1144/fd
总用量 0
lr-x------. 1 root root 64 11月 29 11:26 0 -> /dev/null
lrwx------. 1 root root 64 11月 29 11:26 1 -> socket:[20288]
lr-x------. 1 root root 64 11月 29 11:26 10 -> /etc/passwd+ (deleted)
lrwx------. 1 root root 64 11月 29 11:26 11 -> socket:[24022]
lrwx------. 1 root root 64 11月 29 11:26 12 -> socket:[24023]

cat /proc/1144/fd/10

4,看那些程序占用了111 端口

(八)监控系统资源 虚拟 资源 vmstat

1,含义

Virtual Meomory Statistics(虚拟内存统计)的缩写,可用来监控 CPU 使用、进程状态、内存使用、虚拟内存使用、硬盘输入/输出状态等信息。

[root@localhost ~]# vmstat [-a] [刷新延时 刷新次数]
[root@localhost ~]# vmstat [选项] 


[root@localhost proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次

2,选项

选项含义
-fs-f:显示从启动到目前为止,系统复制(fork)的程序数,此信息是从 /proc/stat 中的 processes 字段中取得的。 -s:将从启动到目前为止,由一些事件导致的内存变化情况列表说明。
-S 单位令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
-d列出硬盘有关读写总量的统计表。
-p 分区设备文件名查看硬盘分区的读写情况

3,字段

字段含义
procs进程信息字段: -r:等待运行的进程数,数量越大,系统越繁忙。 -b:不可被唤醒的进程数量,数量越大,系统越繁忙。
memory内存信息字段: -swpd:虚拟内存的使用情况,单位为 KB。 -free:空闲的内存容量,单位为 KB。-buff:缓冲的内存容量,单位为 KB。-cache:缓存的内存容量,单位为 KB。
swap交换分区信息字段: -si:从磁盘中交换到内存中数据的数量,单位为 KB。 -so:从内存中交换到磁盘中数据的数量,单位为 KB。这两个数越大,表明数据需要经常在磁盘和内存之间进行交换,系统性能越差。
io磁盘读/写信息字段: -bi:从块设备中读入的数据的总量,单位是块。 -bo:写到块设备的数据的总量,单位是块。这两个数越大,代表系统的 I/O 越繁忙。
system系统信息字段: -in:每秒被中断的进程次数。 -cs:每秒进行的事件切换次数。这两个数越大,代表系统与接口设备的通信越繁忙。
cpuCPU信息字段: -us:非内核进程消耗 CPU 运算时间的百分比。 -sy:内核进程消耗 CPU 运算时间的百分比。 -id:空闲 CPU 的百分比。 -wa:等待 I/O 所消耗的 CPU 百分比。 -st:被虚拟机所盗用的 CPU 百分比

(九)free  内存

free  -h
free  -m   #以m为单位查看

问;一台服务器开机一周后非常卡,

是因为缓存太多

echo 3 > /proc/sys/vm/drop_caches 
#清除缓存

pmap 1073
查看进程占用 内存的详细信息

(十)  iostat

1,定义

iostat 可以提供更丰富的IO性能状态数据

2,选项

常用选项:
-c 只显示CPU行
-d 显示设备〈磁盘)使用状态
-k 以千字节为为单位显示输出
-t 在输出中包括时间戳
-x 在输出中包括扩展的磁盘指标

3,例子

iostat 1 -d /dev/sda
#只看 sda硬盘

(十一)iotop 监视磁盘

 

(十二)webadin图形化界面

yum 下载webadin

systemctl start webmin

systemctl status webmin
 

真机访问虚拟机的网络,端口号是10000

输入账户,密码

 将语言改成中文

(十三)uptime 系统运行了多久时间

[root@localhost ~]#uptime 
 01:29:00 up  2:07,  6 users,  load average: 0.00, 0.01, 0.05
当前时间      运行时间  登录用户

(十四)显示CPU相关统计mpstat

[root@localhost ~]#mpstat 
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain) 	2023年07月27日 	_x86_64_	(4 CPU)

01时31分37秒  CPU    %usr   %nice    %sys   %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
01时31分37秒  all    0.71    0.00    1.08    0.75      0.00    0.04   0.00    0.00    0.00   97.41
当前时间            用户空间  ni优先级 系统内核                           盗取时间                 系统空闲


盗取时间和虚拟化有关

[root@localhost ~]#mpstat  1  3
#1秒 一次    看3次

(十五)系统资源统计 dstat

(十六)pmap   看到进程使用内存的情况

九,进程管理

(一)前台运行与后台运行

前台运行:影响当前终端的操作

后台运行:不影响当前终端的操作

(二)前后台命令

1,将前台命令放入后台

为什么要放后台,可以并行执行,提高效率

命令后加   &

2,查看后台任务列表 jobs

3, 把命令从后台拉回前台

fg  1

4,再次把命令放入后台并停止

ctrl +z

5,再次开启后台任务

bg  1

(三)并行执行任务

#ping 127.0.0.1&ping 127.0.0.2&ping 127.0.0.3&

(三)结束进程

kill

1,含义

kill 从字面来看,就是用来杀死进程的命令,但事实上,这个或多或少带有一定的误导性。从本质上讲,kill 命令只是用来向进程发送一个信号,至于这个信号是什么,是用户指定的。

也就是说,kill 命令的执行原理是这样的,kill 命令会向操作系统内核发送一个信号(多是终止信号)和目标进程的 PID,然后系统内核根据收到的信号类型,对指定进程进行相应的操作。

2,通式

kill [信号] PID 
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名

3,常用信号编号

号编号信号名含义
0EXIT程序退出时收到该信息。
1HUP挂掉电话线或终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化。重新读取配置文件
2INT表示结束进程,但并不是强制性的,常用的 "Ctrl+C" 组合键发出就是一个 kill -2 的信号。
3QUIT退出。
9KILL杀死进程,即强制结束进程。(有掉数据的风险)
11SEGV段错误。
15TERM正常结束进程,是 kill 命令的默认信号。

4, killall    /pkill   群杀

killall [选项] [信号] 进程名

  • -i:交互式,询问是否要杀死某个进程;

  • -I:忽略进程名的大小写;

pkill [信号] 进程名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1356910.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI边缘计算智能分析网关V4如何配置周界入侵检测算法

旭帆科技的智能分析网关V4内含近40种智能分析算法&#xff0c;包括人体、车辆、消防、环境卫生、异常检测等等&#xff0c;在消防安全、生产安全、行为检测等场景应用十分广泛&#xff0c;如常见的智慧工地、智慧校园、智慧景区、智慧城管等等&#xff0c;还支持抓拍、记录、告…

动态分区分配算法-第四十四天

目录 前言 首次适应算法&#xff08;First Fit&#xff09; 最佳适应算法&#xff08;Best Fit&#xff09; 最坏适应算法&#xff08;Worst Fit&#xff09; 临近适应算法&#xff08;Next Fit&#xff09; 本节思维导图 前言 动态分区分配算法&#xff1a;在动态分区分…

C#使用switch多路选择语句判断何为季节

目录 一、 switch语句 二、示例 三、生成 一、 switch语句 switch语句是多路选择语句&#xff0c;它通过一个表达式的值来使程序从多个分支中选取一个用于执行的分支。 switch表达式的值只可以是整型、字符串、枚举和布尔类型。 switch语句中多个case可以使用一个break。 在…

移动通信原理与关键技术学习(2)

1.多径信道滤波器表示&#xff0c;多径信道可以认为是线性时变滤波器&#xff0c;接收信号为发送信号与信道冲激响应的卷积。 2.调制就是对信号源的信息进行处理加到载波上&#xff0c;使其变为适合于信道传输的形式的过程&#xff0c;就是使载波随信号而改变的技术。 3.进行调…

CodeWave智能开发平台--03--目标:应用创建--01模板创建依赖问题修改

摘要 本文是网易数帆CodeWave智能开发平台系列的第03篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成模板创建时的依赖问题解决。 CodeWave智能开发平台的03次接触 CodeWave参考资源 网易数帆Code…

3个.NET开源简单易用的任务调度框架

前言 今天分享3个.NET开源、简单、易用的任务调度框架&#xff0c;帮助大家在做定时任务调度框架技术选型的时候有一个参考。 Quartz.Net Quartz.NET是一个功能齐全的开源作业调度系统&#xff0c;可用于从最小的应用程序到大规模企业系统。 Quartz.NetUI Quartz.NetUI是一…

Java 泛型深入解析

Java 中的泛型是一种强大的编程特性&#xff0c;允许我们编写更加通用和类型安全的代码。本篇博客将深入探讨 Java 泛型的各个方面&#xff0c;包括泛型类、泛型方法、泛型接口以及泛型通配符。 1. 泛型类 首先&#xff0c;让我们看一个简单的泛型类的例子。在下面的代码中&a…

功能问题:如何限制同一账号只能在一处登录?

大家好&#xff0c;我是大澈&#xff01; 本文约1200字&#xff0c;整篇阅读大约需要2分钟。 感谢关注微信公众号&#xff1a;“程序员大澈”&#xff0c;免费领取"面试礼包"一份&#xff0c;然后免费加入问答群&#xff0c;从此让解决问题的你不再孤单&#xff01…

C语言快速入门——基础知识

C语言基础 C语言基础C程序基本格式基本数据类型原码、反码和补码原码反码补码 整数类型浮点类型字符类型 变量变量的使用无符号数类型转换 运算符基本运算符运算符优先级自增自减运算符位运算符逻辑运算符 流程控制分支语句 - if分支语句 - switch循环语句 - for循环语句 - whi…

两种高效计算 两个经纬度之间距离的方法--解决Haversine 公式性能慢的问题

目录 前言 Haversine 原理 实现代码 优化后的距离计算 原理 代码 性能及精度对比 前言 最新开发的业务中&#xff0c;涉及到计算两个经纬度之间的距离。已知A点和B点的 经纬度&#xff0c;计算A点到B点之间的距离。最开始使用的是Haversine公式来进行计算&…

opencv期末练习题(8)附带解析

图像切片 %matplotlib inline import cv2 import matplotlib.pyplot as plt def imshow(img,grayFalse,bgr_modeFalse):if gray:img cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)plt.imshow(img,cmap"gray")else:if not bgr_mode:img cv2.cvtColor(img,cv2.COLOR_BGR2RG…

014、枚举与模式匹配

枚举类型&#xff0c;通常也被简称为枚举&#xff0c;它允许我们列举所有可能的值来定义一个类型。在本篇文章中&#xff0c;我们首先会定义并使用一个枚举&#xff0c;以向你展示枚举是如何连同数据来一起编码信息的。 接着&#xff0c;我们会讨论一个特别有用的枚举&#xff…

双碳管理系统任务需求分析(第10套)

需求规格说明书 一、引言 &#xff08;一&#xff09;项目背景 编写本需求规格说明书的目的是为了详细呈现碳足迹产品需求和系统的功能描述&#xff0c;以进一步定制应用软件系统开发的细节问题&#xff0c;便于与项目开发协调工作。本文档面向的读者主要是项目委托单位的管…

找不到vcruntime140.dll怎么处理?6个修复教程分享

本文将详细介绍vcruntime140.dll文件的相关内容&#xff0c;并提供6个不同的修复教程&#xff0c;帮助大家解决这一问题。 一、vcruntime140.dll是什么文件&#xff1f; vcruntime140.dll是Visual C Redistributable Packages的一部分&#xff0c;它是Microsoft Visual Studi…

Alice Bob推出16量子比特量子处理单元——“Helium 1”

​&#xff08;图片来源&#xff1a;网络&#xff09; 容错量子计算机硬件开发商Alice & Bob宣布已成功流片一款新芯片“Helium 1”&#xff0c;希望能借助该芯片降低随着量子比特数增加而提高的错误率&#xff0c;这是该公司第一个纠错逻辑量子比特&#xff08;纠错量子计…

MySQL Enterprise版本各系统安装包下载

一、官方下载地址 oracle下载地址 https://edelivery.oracle.com/osdc/faces/SoftwareDelivery 使用oracle账号登录进去 Category选择Download Package(下载安装包)&#xff0c;搜索栏输入mysql Enterprise关键字点search进行搜索。选项结果第一个MySQL Enterprise Edition&a…

教程:Centos6迁移旧虚拟机文件后的网络配置教程,完美解决虚拟机移动后的网络ip变化问题

博主在工作后,想整整之前大学的虚拟机集群,因此特意从之前的旧电脑把虚拟机文件给拷贝了过来,在导入到vm-workstation,顺便能启动虚拟机后,发现之前的静态ip已经跟现在的宿主机网络不一样。想着重新配置,但觉得太麻烦,故想到了修改网卡的mac地址+网卡重配置方法,完美解…

【绘图软件】自用安装教程

链接&#xff1a;https://pan.baidu.com/s/17r9Pr460FzkULU7fTr91_w?pwdftv7 提取码&#xff1a;ftv7 --来自百度网盘超级会员V6的分享解压并且右键打开set up 解压crack软件前需要退出杀毒软件&#xff0c; 关闭实时保护 域网络关闭&#xff0c;专用网络关闭&#xff0…

【源码分析】 Calcite 处理流程详解:calcite架构、处理流程以及就一个运行示例进行源码分析

文章目录 一. Calcite整体架构二. Calcite处理流程三. 处理流程样例说明1. 样例demo1.1. 样例数据1.2. 使用calcite 2. 流程源码分析Step1: SQL 解析阶段&#xff08;SQL–>SqlNode&#xff09;Step2: SqlNode 验证&#xff08;SqlNode–>SqlNode&#xff09;1. 注册元数…

接口自动化测试,完整入门到入职篇

一、自动化测试 众所周知&#xff0c;自动化测试已经成为软件项目中不可或缺的测试方法。基于用户交互界面&#xff08;GUI&#xff09;的自动化测试方法具有模拟用户行为和过程可视化的特点&#xff0c;因此受到了广大入门自动化人士的喜爱。诸如&#xff1a;QTP、Selenium等…