在 Linux 系统上运行的所有内容、每个用户的作业、每个系统监视器等都作为进程运行。因此,进程管理是Linux系统管理的一个非常重要的方面。在本章中,我们将详细介绍如何管理流程:
■ 如何查找系统上运行的进程。
■ 识别正在破坏系统的进程。
■ 如何终止进程。
■ 如何管理流程。
1 什么是进程1.1 进程的定义
进程是操作系统的概念。每当我们执行程序时,都会为操作系统创建一个进程。在这个过程中,资源被分配和释放。一个进程可以被认为是一个程序的一次执行。
1.2 进程和程序
1)bin目录下有很多二进制可执行文件,这些文件放在程序里。
2)如果执行一个可执行文件,运行的程序称为进程,进程是OS(操作系统)任务调度的基本单位。
3)程序只占用磁盘空间,不占用系统资源;进程将程序加载到内存中,运行的进程占用系统资源。一个程序可以启动多个进程。
4) 进程有一个生命周期。每个进程都有一个 ID (PID) 和一个父进程 ID (PPID)。
1.3 调用过程(满足多用户操作的需要)
程序会从父进程复制(fork)生成一个完全相同的子进程,然后复制的子进程通过exec方法执行实际的程序,最终成为子进程。存在。下图是调用过程的详细说明:
2进程管理2.1查看进程:ps
Linux 中的 ps 命令是 Process Status 的缩写。 ps 命令用于列出系统中当前正在运行的那些进程。 ps 命令列出当前进程的快照linux查看端口被哪个进程占用,即执行 ps 命令时的那些进程。
要对进程进行监控,首先要了解当前进程,也就是需要查看当前进程,而ps命令是最基本也是非常强大的进程查看命令。使用该命令可以判断哪些进程正在运行以及它们的运行状态,进程是否终止,进程是否死机,哪些进程占用了太多资源等等。总之,执行这个命令就可以得到大部分信息。
命令格式:
ps [参数]
命令功能:
用于显示当前进程的状态。
例子:
1)列出当前内存中的所有程序
ps -aux
ps -ef
每个字段的详细说明:
3)常用ps和grep组合查找具体进程
ps -aux |grep 要查找的进程关键字
ps -ef | grep 要查找的进程关键字
每一列的含义如下:
UID:用户ID,但输出的是用户名
PID:进程的ID
PPID:父进程ID
C:进程占用CPU的百分比
STIME:进程开始的时间
TTY:进程正在终端上运行。如果与终端无关,会显示 ?如果是pts/0等,说明宿主进程是通过网络连接的。
TIME:进程占用的CPU时间
CMD:命令名称和参数
过滤一列中的所有数据:
awk 工作流程:
如果分隔符是“空格键”或“[tab]键”,不需要加-F, awk ‘{print $n}’
如果不是默认分隔符:
awk -F ‘分隔符’ ‘{print $n}’
读入一条用’n’换行符分隔的记录,然后根据指定的字段分隔符将记录分成字段,填写字段,
$0 表示所有域;
$1 代表第一个域;
$n代表第n个域;
默认的字段分隔符是“空格键”或“[tab]键”
字符串的拆分方法
如何找到特定命令的进程 ID?
示例 2:
过滤掉年龄列
2.2 终止指定进程:kill
Linux中的kill命令用于终止指定进程的运行(terminate a process)。是Linux下进程管理的常用命令。通常,您可以使用 Ctrl+C 键来终止前台进程。但是,对于后台进程,您必须使用 kill 命令终止它。我们需要使用ps/top等工具获取进程PID,然后使用kill命令杀掉进程。 .
命令格式:
kill [参数] [进程号]
命令功能:
将指定的信号发送给对应的进程。不指定模型将发送指定进程终止。
root用户会影响用户的进程,非root用户只能影响自己的进程。 .
参数:
-15:终止进程并将指定的信号发送给相应的进程。不指定模型将发送指定进程终止。
-9:强制终止进程。
例子:
1)查看指定进程并终止进程
ps -ef | grep xxx
kill -15 查出来的指定进程号
2)查看指定进程并强制终止进程
ps -ef | grep xxx
kill -9 查出来的指定进程号
2.3 实时监控:top
top命令是Linux下常用的性能分析工具,可以实时显示系统中各个进程的资源占用情况,类似于Windows的任务管理器。
top是一个动态的显示过程,即当前状态可以通过用户的按键不断刷新。如果命令在前台执行linux查看端口被哪个进程占用,它将独占前台,直到用户终止程序。更准确地说,top 命令提供对系统处理器状态的实时监控。它将显示系统中最“CPU 敏感”任务的列表。
该命令可以按CPU使用率、内存使用率和执行时间对任务进行排序;该命令的许多功能可以通过交互命令或在自定义文件中设置。
命令格式:
top [参数]
命令功能:
显示系统当前正在执行的进程的信息,包括进程ID、内存使用情况、CPU使用情况等。
参数:
例子:
1)显示进程信息
说明:
前五行是当前系统情况的整体统计信息区域。下面我们来看看每一行信息的具体含义。
第一行,任务队列信息,和uptime命令的执行结果一样。具体参数如下:
1)当前系统时间
2)系统运行时间
3)当前登录系统的用户数
4)负载平均后的三个数字分别是1分钟、5分钟、15分钟的负载条件。负载平均数据是每5秒检查一次活动进程的数量,然后根据特定的算法计算该值。如果这个数字除以逻辑 CPU 的数量,大于 5 的结果表明系统过载。
第二行,Tasks – 任务(进程),具体信息如下:
1)系统当前进程总数
2)正在运行的进程数
3)休眠的进程数
4)处于停止状态的进程数
5)僵尸状态的进程数
第三行,cpu状态信息,具体属性描述如下:
5.9%us — 用户空间使用的 CPU 百分比。
3.4% sy — 内核空间使用的 CPU 百分比。
0.0% ni — 改变优先级的进程占用 CPU 的百分比
90.4% id — 空闲 CPU 的百分比
0.0% wa——IO等待占用CPU的百分比
0.0% hi — 硬件 IRQ 占用 CPU 的百分比
0.2% si — 软件中断占用 CPU 的百分比
第四行,内存状态,具体信息如下:
1)总物理内存(32GB)
2)使用的总内存(14GB)
3)总可用内存(18GB)
4)缓存内存(169M)
第五行,swap交换分区信息,具体信息如下:
1)总交换区(32GB)
2)已使用的交换区总量(0K)
3)总空闲交换区(32GB)
4)总缓冲交换区 (3.6GB)
第六行,空白。
第七行以下:各个进程(任务)的状态监控,item栏信息解释如下:
PID — 进程 ID
USER — 进程所有者
PR – 进程优先级
NI——物超所值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,以千字节为单位。 VIRT=SWAP+RES
RES — 未被换出的进程使用的物理内存大小,以 kb 为单位。 RES=代码+数据
SHR — 共享内存大小,以 kb 为单位
S — 进程状态。 D=不间断睡眠状态 R=运行中 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 自上次更新以来使用的 CPU 时间百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的总 CPU 时间,以 1/100 秒为单位
COMMAND——进程名(命令行名/命令行)
2)高亮当前正在运行的进程
点击键盘上的“b”(打开/关闭突出显示)
3)处理字段排序
默认进入top时,每个进程按CPU使用率排序,按键盘“x”(开启/关闭排序栏高亮效果)
3 如何查看端口的占用情况
在使用Linux系统过程中,有时端口被占用,服务无法启动。
比如Tomcat使用了8080端口,但是再次启动Tomcat时,发现这个端口正在使用中。
此时需要查看是哪个进程占用了该端口,以决定进一步的处理方式。
#根据端口号,找到对应的执行进程
netstat -apn | grep 端口号
#再根据进程,找到对应的进程执行信息
ps -aux | grep 进程号
使用22端口演示
端口 22:ssh 端口
临时安装一个tomcat,下面是通过Tomcat端口查找具体进程信息。
暂无评论内容