Liunx进程与端口

目录

查看进程

进程状态 (了解)

TTY (拓展)

查看进程PID

1. pgrep

2. pidof

  动态查看查看进程

top与htop的操作:

计算cpu负载:

进程控制

kill与pkill

查看端口

1. netstat

2. ss

3. lsof


查看进程

ps :process nsapashot命令在Unix基础的系统中,被广泛用来查看当前系统的进程状态。这个命令有许多参数,其中一些常用的参数如下:

  1. -e:列出所有进程。
  2. -f:全格式输出。
  3. -l:长格式输出。
  4. -a:显示终端上的所有进程,包括其他用户的进程。
  5. -u:用户为有效用户的进程。
  6. -x:显示没有控制终端的进程。
  7. -p:随后可以指定进程ID,显示该ID的进程的状态。
  8. -T:显示各个线程的状态。
  9. -o:自定义输出格式。

因此,常见的几种 ps 组合参数包括(黑体加粗的是最常用):

  • ps -e:显示所有进程。
  • ps -ef:以全格式显示所有进程。
  • ps -aux:显示包括其他用户在内的所有进程,并包含每个进程的CPU使用率、内存使用率、启动时间等详细信息。
  • ps -l:长格式输出,包括进程状态、UID、GID等详细信息。
  • ps -p:查看指定PID的进程的状态。

[root@localhost ~]# ps aux 
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
============================================================================
USER: 	#运行进程的用户
PID:   #进程ID
%CPU:   #CPU占用率
%MEM:   #内存占用率
VSZ	    进程占用的虚拟内存大小。
RSS     占用的物理内存大小
STAT:  #进程状态  ---了解
?    表示没有占用终端
R 	运行
S 	可中断睡眠 Sleep
D	不可中断睡眠
T 	停止的进程 
Z 	僵尸进程
X    死掉的进程
START:	#进程的启动时间
TIME:	#进程占用CPU的总时间
COMMAND: #进程文件,进程名
[root@localhost ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
=============================================================
UID       用户ID
PID       进程ID
PPID      父进程ID
C         CPU占用率
STIME     开始时间
TTY       开始此进程的TTY----终端设备
TIME      此进程运行的总时间
CMD       命令名

进程状态 (了解)

R:运行(running)或可运行(runnable)(在运行队列中)
S:中断(interruptable sleep),等待某个条件结束
D:不可中断(uninterruptable sleep),通常是进行I/O操作
T:停止(stoppped),可能被作业控制或因为被追踪(traced)
Z:僵尸(zombie)状态,进程已经终止,但父进程尚未获取其终止状态
X:进程不存在
I:空闲(idle)状态
W:换页(paging )
<:高优先级(high-priority )
N:低优先级(low-priority)
L:内存泄漏(leaky:pages locked into memory)
s:进程领导者(session leader)
l:多线程(multi-threaded)
+:前台进程组(foreground process group)

Sl:此进程是多线程的,通常表示它是一个服务进程
Ss:此进程是当前会话的领导者
R+:此进程处于前台进程组
S<:此进程的优先级较高
SN:此进程的优先级较低

TTY (拓展)

在Unix和Unix-like操作系统中,TTY是Teletypewriter的缩写,指的是终端。最早,TTY是指打字机式打印设备,是人类与计算机交互的最早设备。随着技术的进步,现在的终端设备已经从打字机式的设备发展为电子显示屏和键盘。

在Linux系统中,每一个登录的用户都会被分配一个终端(TTY)。这个终端可能是一个实体的控制台、或者是一个远程的终端、或者是伪终端(例如SSH进入系统得到的终端,或者是图形界面打开的终端模拟器所得到的终端)。

通过 who 命令查看当前系统中所有已登录用户使用的终端,也可以通过 tty 命令查看当前操作使用的是哪个终端,如果有多个终端连接系统,w命令可以显示全部并将当前终端用w标识。

[root@localhost ~]# w
 15:46:23 up  2:01,  1 user,  load average: 0.00, 0.01, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.226.1    13:45    7.00s  0.03s  0.00s w
[root@localhost ~]# who
root     pts/0        2024-04-28 13:45 (192.168.226.1)
[root@localhost ~]# tty
/dev/pts/0

查看进程PID

1. pgrep

pgrep 命令用于查找符合指定条件的进程,并将找到的进程的进程ID输出到标准输出。这个命令有很多选项,可以按名称、用户、进程组等条件搜索进程。pgrep命令更强大,可以通过进程名称、用户UID、终端等各种参数来匹配进程。

例如,pgrep sshd 命令会找到名为"sshd"的所有进程的PID。

[root@localhost ~]# pgrep sshd
889
1143
1150

2. pidof

pidof 命令用于查找具有特定名字的进程的进程ID,它是killallpkill命令的低级版本。

例如, pidof sshd 命令会找到名为"sshd"的进程的PID。

[root@localhost ~]# pidof sshd
1150 1143 889

  动态查看查看进程

[root@localhost ~]# top  #动态显示信息,三秒刷新一次。
或
[root@localhost ~]# yum install -y htop
[root@localhost ~]# htop  #top的升级版

top和htop都是Linux系统中用于动态观察系统和进程状态的实用工具,但两者之间存在一些差异。
top:
top命令可以动态观察系统状态,包括查看CPU使用情况、内存使用情况、运行的进程等信息。top 是一个非常常用的命令,几乎所有的Linux发行版都会内置。它提供了实时的视图来显示正在运行的系统上哪些进程占用了最多的CPU。
htop:
htop 是 top 的一个增强版。与top相比,htop提供了一个颜色丰富,更易于阅读和理解的界面。除了可以显示基本的系统状态和进程信息,htop 还可以直接对进程进行管理,比如结束进程等。
在htop中,有一些额外的功能,例如:
  显示所有CPU的负载图。(在多核CPU中非常有用)
  更好的内存使用显示。
  滚动查看和管理所有进程。
  可以直接操作进程,例如结束进程,而无需知道进程ID。




top - 19:46:13 up  6:01,  1 user,  load average: 0.00, 0.01, 0.04
Tasks: 107 total,   1 running, 104 sleeping,   2 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 :   995676 total,   521300 free,   164960 used,   309416 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   682392 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                                                                                                                           
     1 root      20   0  125512   4060   2620 S  0.0  0.4   0:00.79 systemd                                                                                                                           
     2 root      20   0       0      0      0 S  0.0  0.0   0:00.00 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:00.11 ksoftirqd/0                                                                                                                       
     7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0                                                                                                                       
     8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh                                                                                                                            
     9 root      20   0       0      0      0 S  0.0  0.0   0:00.25 rcu_sched                                                                                                                         
    10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain                                                                                                                     
    11 root      rt   0       0      0      0 S  0.0  0.0   0:00.13 watchdog/0                                                                                                                        
    13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs                                                                                                                         
    14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns                                                                                                                             
    15 root      20   0       0      0      0 S  0.0  0.0   0:00.01 khungtaskd                                                                                                                        
    16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback                                                                                                                         
    17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd                                                                                                                       
    18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset                                                                                                                            
               
us: 用户模式 (user time),花在用户模式进程上的CPU时钟时间百分比。
sy: 系统模式 (system time),花在内核模式进程上的CPU时钟时间百分比。
ni: 用户模式的 nice 权重(调整过优先级)的进程的CPU时钟时间百分比。
id: 空闲时间 (idle time),CPU空闲的时间百分比。
wa: I/O等待 (iowait),由于等待I/O操作(例如读写硬盘)而空闲的CPU时钟时间百分比。
hi: 硬中断时间 (hardware irq),处理硬中断请求(hardware IRQ)的CPU时钟时间百分比。
si: 软中断时间 (software irq),处理软中断请求(software IRQ)的CPU时钟时间百分比。
st: 用在虚拟机环境,表示被hypervisor偷走的时间。


进程优先级 nice :
nice 值越高:表示优先级越低,例如+19,该进程容易将CPU 使用量让给其他进程。
nice 值越低:表示优先级越高,例如-20,该进程更不倾向于让出CPU。


修改进程优先级(了解)
renice
-n:设置新的优先级值
-p:后接进程ID (PID)
-g:后接进程组 ID
-u:后接用户名或者用户ID
例:
#对 PID 为 1234 的进程设置新的 nice 值 10
renice -n 10 -p 1234
#将用户名为 'username' 所有进程的优先级都提高 5
renice -n -5 -u username
#对进程组ID为 456 的进程组设置新的 nice 值 5
renice -n 5 -g 456


PID: Process ID,就是进程的ID号。
USER: 进程的拥有者。
PR: Priority,进程的优先级状态,越小越优先被执行。
NI: Nice value,一个值,用来设定进程被调度的优先级;
VIRT: Virtual Memory Usage,进程用掉的虚拟内存总量,包含了进程使用的库、代码、数据等。
RES: Resident Memory Usage,驻留内存大小,即进程使用的物理内存大小。
SHR: Shared Memory Size,共享内存大小,即该进程使用的可共享的内存大小。
S: 进程状态。包括:'D' 不可中断的睡眠状态,'R' 运行中,'S' 睡眠状态,'T' 被跟踪或已停止,'Z' 僵尸进程。
%CPU: 进程占用CPU的使用率。
%MEM: 进程使用的物理内存和总物理内存的百分比。
TIME+: 该进程启动后占用的总的CPU时间。
COMMAND: 进程启动命令名称。


top与htop的操作:

> 往下翻页
< 往上翻页
q 退出   
z 彩色显示
W 保存

排序:

在top运行时,你可以通过按相应的按键来改变进程列表的排序方式。比如以下几个常用的键:

P: 以CPU使用率排序。

M: 以内存使用率排序。

T: 以运行时间排序。

刷新频率:

默认情况下,top每3秒刷新一次。你可以通过按s键,然后输入一个新的数字来改变刷新的频率。例如,按s,然后输入1, top就会每秒刷新一次。

在工作中必须监控的东西 load average(平均负载)等待cpu处理的队列长度也是个数。
1分钟   第一个数字
5分钟   第二个数字
15分钟  第三个数字

计算cpu负载:

load average的三个值: 0.10, 0.16, 0.12,分别除cpu的个数,得出的值,如果值大于1那么那时候的负载高。

进程控制

kill与pkill

[root@localhost ~]# kill -l   #查看所有信号
#在显示的64个信号中,总结来讲只需要记住五个即可
-1   HUP  重新加载进程或者重新加载配置文件,PID不变   
-9   KILL 强制杀死
-15  TERM 正常杀死(这个信号可以默认不写)
-18  CONT 激活进程
-19  STOP 挂起进程

例:
kill -1 59363  #发送重启信号,例如vsftpd的配置文件发生改变,希望重新加载
kill 59363 #正常杀死进程,信号为-15可以默认不写。
kill -9 67003  #强制杀死,一般用于不能正常停止的情况下
pkill -9 vsftpd  #使用pkill可以指定进程名字

kill 和 pkill 的主要区别在于:
kill 需要明确的进程ID,而 pkill 可以通过进程的其他属性(如名字)来指定目标进程。pkill使用服务名的时候会杀死所有包含服务名的服务。

查看端口

1. netstat

使用前提是需要有net-tools包才可使用。

  • -a : 显示所有连接和侦听端口。

  • -n : 显示数字格式的地址和端口号,而不是尝试查找并显示名称。

  • -t : 显示TCP连接。

  • -u : 显示UDP连接。

  • -l : 仅显示在侦听状态的套接字(即正在等待连接的服务器端的套接字)

  • -p : 显示与套接字关联的进程ID和名称。

  • -r : 显示路由表。

  • -i : 显示网络接口信息。

  • -e : 参数可以显示更多关于网络接口的详细信息

  • -s : 显示网络统计信息,如IP, TCP, UDP等协议的统计信息。

例:可以将多个参数一起使用如果你想看所有的TCP连接,并且你希望看到数字格式的地址和端口号,你可以使用

netstat -nt

如果你想知道哪个进程正在使用某个端口,你可以使用

netstat -anp

如果你想要同时查看TCP和UDP连接,你可以使用 

netstat -tu

2. ss

ss的参数一样可用netstat的参数使用。ss -tnlp 常用组合命令

例:

显示所有打开的网络连接:

ss

如果你想看到数字形式的端口和地址,而不是尝试获取名称,你可以使用-n参数:

ss -tun

 显示系统中所有监听的 TCP 套接字以及关联的进程信息

ss -tnlp

3. lsof

前提需要有lsof包才可使用。

  • -a:该参数用于连接参数和表达式条件,可以理解为“与”的逻辑。
  • -c:后接进程名,表示列出该进程所打开的文件。
  • -p:后接进程ID,表示列出该进程ID所打开的文件。
  • -u:后接用户名,表示列出该用户进程打开的文件。
  • -i:该参数后面可以跟网络协议(如 TCP 或 UDP)、端口号等,用来显示网络连接情况。
  • -d:后接文件描述符,用于显示该描述符的进程。
  • -n:此参数让 lsof 显示网络连接的数字IP地址。
  • -P:此参数让 lsof 显示数字形式的端口号。
  • -t:此参数让 lsof 仅打印进程 ID ,常用于 shell 脚本。

例:

查看用户 nginx 打开的所有文件:

lsof -u nginx

列出 PID 为 123 的进程所有打开的文件:

lsof -p 123

列出所有监听 TCP 或 UDP 端口的进程:

lsof -i tcp,udp

列出所有由 root 打开的网络连接:

lsof -u root -i 

列出所有80端口的HTTP连接:

lsof -i tcp:80

列出所有端口为22的网络连接:

lsof -i :22

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

JMeter的下载安装与使用(Mac)

1、下载地址​​​​​​https://jmeter.apache.org/download_jmeter.cgi 2、下载Binaries 下的apache-jmeter5.5.tgz 3、解压 4、启动 在bin目录下打开终端&#xff0c;输入sh jmeter 出现jmeter首页界面&#xff0c;即为成功。 5、使用 5.1 语言选择 option选项卡&am…

新装电脑Flutter环境部署坑汇总(持续更新)

1.本地安装&#xff0c;安装fvm的坑 本人电脑使用windows &#xff0c;安装fvm则一般使用choco安装&#xff0c;那么首先需要安装choco,打开powershell/或者cmd运行以下命令&#xff1a; Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager…

Mycat(二)读写分离(Mysql读写分离->MyCat读写分离)、安装JDK

文章目录 概述搭建 MySQL 数据库主从复制MySQL 主从复制原理主机配置(atguigu01)从机配置(atguigu02)主机、从机重启 MySQL 服务主机从机都关闭防火墙在主机上建立帐户并授权 slave在从机上配置需要复制的主机主机新建库、新建表、insert 记录&#xff0c;从机复制停止从服务复…

Linux基本指令(2)

目录 mv指令&#xff1a; cat&#xff1a; more指令&#xff1a; less指令&#xff1a; head指令&#xff1a; tail指令&#xff1a; mv指令&#xff1a; 说明&#xff1a; mv命令是move的缩写&#xff0c;可以用来移动文件或者文件改名(move(rename)files),是linux系统下…

LMDeploy 量化部署 LLM-VLM 实践 学习笔记

视频链接 https://www.bilibili.com/video/BV1tr421x75B/?vd_sourcea1ce254b4a97f9f687a83e661793cb2c 什么是模型部署 部署指的是已经开发好的大模型投入使用&#xff0c;要把模型部署到服务器或者移动端里&#xff0c;如何在有限的资源里加载大模型&#xff1f; 比如你好不…

2024年信息教育化与语言艺术国际学术会议(IACIELA 2024)

2024年信息教育化与语言艺术国际学术会议(IACIELA 2024) 2024 International Conference on Information Education and Language Art 一、【会议简介】 2024年信息教育化与语言艺术国际学术会议&#xff0c;将探讨教育与语言艺术的结合。 在当今的信息时代&#xff0c;语言艺术…

ElasticSearch批处理

在刚才的新增当中&#xff0c;我们是一次新增一条数据。那么如果你将来的数据库里有数千上万的数据&#xff0c;你一次新增一个&#xff0c;那得多麻烦。所以我们还要学习一下批量导入功能。 也就是说批量的把数据库的数据写入索引库。那这里的需求是&#xff0c;首先利用mybat…

C#基础|StringBuilder字符串如何高效处理。

哈喽&#xff0c;你好&#xff0c;我是雷工。 字符串处理在C#程序开发中是使用频率比较高的&#xff0c;但常规的字符串处理方式对内存占用比较多&#xff0c;为了优化内存&#xff0c;减少不必要的内存浪费&#xff0c;引入了StringBuilder类。 下面学习下StringBuilder类的使…

牛客NC99 多叉树的直径【较难 深度优先 Java/Go/PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/a77b4f3d84bf4a7891519ffee9376df3 思路 核心就是树的最大直径(globalMax)一定是以某一个node为root最长的两个path-to-leaf. 就是普通dfs的同时算路径长度。时间: O(n), DFS一次 空间: O(n)参考答案Java impo…

(二十一)C++自制植物大战僵尸游戏僵尸游戏关卡结束数据处理

植物大战僵尸游戏开发教程专栏地址http://t.csdnimg.cn/8UFMs 文件位置 代码实现的文件在Class\Scenes\GameScene文件夹中,如下图所示。 GameEndLayer.h class GSGameEndLayer :public LayerColor { public:CREATE_FUNC(GSGameEndLayer);void successfullEntry();void brea…

大田场景下的路径检测论文汇总

文章目录 2020Visual Servoing-based Navigation for Monitoring Row-Crop Fields 2020 Visual Servoing-based Navigation for Monitoring Row-Crop Fields code: https://github.com/PRBonn/visual-crop-row-navigation 摘要&#xff1a; 自主导航是野外机器人执行精确农业…

C++ day5

#include <iostream> using namespace std; class Person {string name;int *age; public:Person():name("zhangsan"),age(new int(18)){cout << "Person的无参构造" << endl;}Person(string name,int age):name("zhangsan"),…

喜报!得帆被评为2024年上海市重点服务独角兽企业

月23日&#xff0c;在市经济信息化委和闵行区政府指导下“2024年上海市重点服务独角兽&#xff08;潜力&#xff09;企业榜单发布会暨高质量发展产业对接会”在上海成功举办。 会上正式公布《2024年上海市重点服务独角兽&#xff08;潜力&#xff09;企业榜单》&#xff0c;上…

08_Scala函数式编程重点

文章目录 函数式编程1.创建简单函数2.可变参数3.默认参数4.函数式编程&#xff0c;代码简化 函数式编程 函数式编程是对功能进行封装&#xff0c;最终是需要等号 def test() {} //于python略有不同1.创建简单函数 // 1.定义函数def test(): Unit {}牛逼之处就是可以在m…

由于找不到msvcr120.dll,无法继续执行代码

在日常编程中&#xff0c;缺少关键的msvcr120.dll文件可能会导致代码无法执行&#xff0c;给我们带来不便。针对缺少msvcr120.dll文件的情况&#xff0c;我们可以采取一些有效的解决方法来解决这一问题。通过下载安装或使用Visual C Redistributable工具安装该msvcr120.dll文件…

数据结构四:线性表之带头结点的单向循环链表的设计

前面两篇介绍了线性表的顺序和链式存储结构&#xff0c;其中链式存储结构为单向链表&#xff08;即一个方向的有限长度、不循环的链表&#xff09;&#xff0c;对于单链表&#xff0c;由于每个节点只存储了向后的结点的地址&#xff0c;到了尾巴结点就停止了向后链的操作。也就…

STM32G431RBT6之LCD与LED配置

首先,配置时钟树,时钟树的配置在我的另外一篇博客里,这里不再赘述. LCD与LED具有共同的IO口,同时创建工程较好. 打开原理图,发现LED的IO口是PC8~PC15,还有一个容易看漏的PD2.LCD的IO口是PC0到PC15. 当然,看产品手册也可以知道,但是还是推荐大家看原理图. 打开cubumx,给PC0~PC…

如何讲好ppt演讲技巧(4篇)

如何讲好ppt演讲技巧&#xff08;4篇&#xff09; 如何讲好PPT演讲技巧&#xff08;四篇&#xff09; **篇&#xff1a;精心准备&#xff0c;奠定演讲基础 一个成功的PPT演讲&#xff0c;离不开精心的准备。首先&#xff0c;要确定演讲的主题和目标&#xff0c;确保演讲内容清…

应用实战|只需几步,即可享有外卖订餐小程序

本示例是一个简单的外卖查看店铺点菜的外卖微信小程序&#xff0c;小程序后端服务使用了MemFire Cloud&#xff0c;其中使用到的MemFire Cloud功能包括&#xff1a; 其中使用到的MemFire Cloud功能包括&#xff1a; 云数据库&#xff1a;存储外卖微信小程序所有数据表的信息。…

服务端不 listen 可以创建 tcp 连接吗

这个问题有三类答案。 上来就撸 linux kernel 源码&#xff0c;折腾半天&#xff0c;哦&#xff0c;终于在 tcp_rcv_state_process 里找到了 tcp_rcv_synsent_state_process 调用&#xff0c;后者包含&#xff1a; if (th->syn) {/* We see SYN without ACK. It is attemp…
最新文章