Linux软件包和进程

rpm管理工具

rpm软件包介绍

(1)rpm是红帽包管理(redhat package manager)的缩写,是由Redhat公司提出的一种软件包管理标准,是Linux各发行版中应用最广泛的软件包格式之一(还有debian,ubantu的发行版deb安装包)。
(2)rpm软件包中包含有关于本软件包的相关信息,便于对软件包信息进行查询。rpm软件包的典型命名格式:

软件名-版本号-发行号.操作系统版本.硬件平台的类型.rpm

比如:
zsh-5.0.2-14.e17.x86_64.rpm

zsh50214e17x8664
软件名主版本号次版本号修订号软件发布次数发行商RHEL7CPU架构平台支持系统位数

rpm包相关网站

http://rpmfind.net/
http://rpm.pbone.net/

rpm获取及安装

参数说明
-i安装软件包
-v显示安装时信息
-h安装软件包的时候列出哈希标记
-U软件包升级
-e软件包卸载

获取.rpm软件包

  • 从官网或云盘下载
  • 从本地镜像获取(要想从本地镜像安装,先挂载/etc/sr0)
1.从网上下载并安装rpm包

先复制对应rpm网址链接(-O指定具体下载位置)

[root@loaclhost ~]# wget -O /root/sl/sl-5.02-1.el9.x86_64.rpm https://rpmfind.net/linux/epel/9/Everything/x86_64/Packages/s/sl-5.02-1.el9.x86_64.rpm

正在解析主机 rpmfind.net (rpmfind.net)... 195.220.108.108
正在连接 rpmfind.net (rpmfind.net)|195.220.108.108|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:16509 (16K) [application/x-rpm]
正在保存至: “/root/sl/sl-5.02-1.el9.x86_64.rpm”

/root/sl/sl-5.02- 100%[=============>]  16.12K  63.5KB/s  用时 0.3s

2023-08-01 18:02:56 (63.5 KB/s) - 已保存 “/root/sl/sl-5.02-1.el9.x86_64.rpm” [16509/16509])
安装rpm包
[root@loaclhost ~]# rpm -ivh /root/sl/sl-5.02-1.el9.x86_64.rpm
警告:/root/sl/sl-5.02-1.el9.x86_64.rpm: 头V4 RSA/SHA256 Signature, 密钥 ID 3228467c: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:sl-5.02-1.el9                    ################################# [100%]
卸载rpm应用程序
rpm -evh 软件名
[root@loaclhost ~]# rpm -evh sl
准备中...                          ################################# [100%]
正在清理/删除...
   1:sl-5.02-1.el9                    ################################# [100%]

2.从本地镜像文件中获取

注:从本地镜像文件中获取的条件:
1.先将iso镜像文件浏览到虚拟机的光驱(光盘驱动器)
在这里插入图片描述

2.再挂载光盘读取光盘里面的文件(在挂载前先创建挂载目录)(iso镜像文件在/dev/sr0中)

#在挂载前先在根目录下创建名为guangpan挂载目录
[root@loaclhost ~]# mkdir /guangpan
#再使用mount进行挂载
[root@loaclhost ~]# mount /dev/sr0 /guangpan
mount: /guangpan: WARNING: source write-protected, mounted read-only.
[root@loaclhost ~]# ll /guangpan
总用量 44
dr-xr-xr-x. 1 root root  2048 1027  2022 AppStream
dr-xr-xr-x. 1 root root  2048 1027  2022 BaseOS
dr-xr-xr-x. 1 root root  2048 1027  2022 EFI
-r--r--r--. 1 root root  8154 1027  2022 EULA
-r--r--r--. 1 root root  1455 1027  2022 extra_files.json
-r--r--r--. 1 root root 18092 1027  2022 GPL
dr-xr-xr-x. 1 root root  2048 1027  2022 images
dr-xr-xr-x. 1 root root  2048 1027  2022 isolinux
-r--r--r--. 1 root root   103 1027  2022 media.repo
-r--r--r--. 1 root root  1669 1027  2022 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  3682 1027  2022 RPM-GPG-KEY-redhat-release
#其中,rpm包在AppStream/Packages中和BaseOS/Packages中

3.之后就可以使用rpm进行安装和卸载等操作

[root@loaclhost ~]# rpm -ivh /guangpan/AppStream/Packages/xz-devel-5.2.5-8.el9_0.x86_64.rpm
警告:/guangpan/AppStream/Packages/xz-devel-5.2.5-8.el9_0.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID fd431d51: NOKEY
Verifying...                          ################################# [100%]
准备中...                          ################################# [100%]
正在升级/安装...
   1:xz-devel-5.2.5-8.el9_0           ################################# [100%]
rpm -evh 软件名
[root@loaclhost ~]# rpm -evh xz-devel
准备中...                          ################################# [100%]
正在清理/删除...
   1:xz-devel-5.2.5-8.el9_0           ################################# [100%]

rpm查询功能(rpm -q 常与下面参数组合使用)

参数说明
-a查询所有已安装的软件包
-l显示已安装软件包的相关文件和信息
-f查询文件所属软件包
-i显示已安装rpm软件包信息
#查询所有已安装的包(-a)
[root@loaclhost ~]# rpm -qa
#查询有没有安装httpd包(grep过滤)
[root@loaclhost ~]# rpm -qa | grep httpd
#显示已安装软件包的相关文件(-l)
[root@loaclhost ~]# rpm -ql xz-devel
#查询lzma文件所属软件包(-f)
[root@loaclhost ~]# rpm -qf /usr/include/lzma
xz-devel-5.2.5-8.el9_0.x86_64

#显示已安装rpm软件包信息(-i)
[root@loaclhost ~]# rpm -qi xz-devel
Name        : xz-devel
Version     : 5.2.5
Release     : 8.el9_0
Architecture: x86_64
Install Date: 2023年08月01日 星期二 18时38分50秒
Group       : Unspecified
Size        : 206635
License     : Public Domain
Signature   : RSA/SHA256, 2022年06月06日 星期一 16时11分31秒, Key ID 199e2f91fd431d51
Source RPM  : xz-5.2.5-8.el9_0.src.rpm
Build Date  : 2022年05月31日 星期二 22时30分59秒
Build Host  : x86-64-02.build.eng.rdu2.redhat.com
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Vendor      : Red Hat, Inc.
URL         : https://tukaani.org/xz/
Summary     : Devel libraries & headers for liblzma
Description :
Devel libraries and headers for liblzma.

rpm安装总结:

rpm安装软件时很麻烦,需要了解清楚软件之间的依赖关系

yum/dnf管理工具

YUM (Yellow dog Updater,Modified) ,RHEL8中默认使用的软件批量管理工具由原版本的yum换成了速度更快的dnf(DNF = Dandified YUM),原有的yum命令仅为dnf的软链接,当然依旧可以使用。

#yum和dnf都是dnf-3的软链接
[root@loaclhost ~]# which yum
/usr/bin/yum
[root@loaclhost ~]# which dnf
/usr/bin/dnf
[root@loaclhost ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5  915  2022 /usr/bin/yum -> dnf-3
[root@loaclhost ~]# ll /usr/bin/dnf
lrwxrwxrwx. 1 root root 5  915  2022 /usr/bin/dnf -> dnf-3

yum/dnf功能

  • 在线下载、 安装、 卸载、 升级rpm软件包
  • 自动查找并解决rpm包之间的依赖关系,一次性安装所有具有依赖关系的rpm包,而无需管理员逐
    个、 手工地去安装每一个rpm包

如何实现yum/DNF安装

系统会去读取 /etc/yum.repos.d/ 目录下的 .repo 结尾的文件,从该文件中读取以下内容实现装包:
1.包含各种rpm安装文件的软件仓库(rhel8、rhel9有两个仓库,rhel7只有一个仓库)

  • BaseOS存储库:提供一套核心的底层操作系统功能,为基础软件安装库
  • AppStream存储库:包括额外的用户空间应用程序、运行时语言和数据库

2.软件仓库的地址信息

安装软件包

假设我们先不配置仓库,进行yum安装

#安装httpd
[root@loaclhost ~]# yum install httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

错误:在"/etc/yum.repos.d", "/etc/yum/repos.d", "/etc/distro.repos.d"中没有被启用的仓库。

出现以上错误是因为在"/etc/yum.repos.d"下面没有启用的仓库.
所以,我们得先创建并配置仓库
注意:仓库的文件名必须以.repo结尾,如果有多个以.repo结尾的文件,那么每一个.repo文件都会被读取,rhel8和rhel9都需要至少两个仓库:APPStream和BaseOS

配置网络源

先在/etc/yum.repos.d/下touch创建一个wangluo.repo文件,这个文件也就是我们所要配置仓库的地方

[root@loaclhost ~]# touch /etc/yum.repos.d/wangluo.repo
[root@loaclhost ~]# ll  /etc/yum.repos.d/
总用量 4
-rw-r--r--. 1 root root 358  513 19:12 redhat.repo
-rw-r--r--. 1 root root   0  81 19:33 suibian.repo

然后使用vim配置仓库

[root@loaclhost ~]# vim /etc/yum.repos.d/wangluo.repo

[root@loaclhost ~]# cat /etc/yum.repos.d/wangluo.repo
[app]    #仓库id
name=appstream   #仓库名称
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/AppStream/x86_64/os/   #软件仓库的路径
#enabled=1    #1标识启用该仓库,0标识不启用该仓库,默认值是1
gpgcheck=0    #1表示鉴定软件包,0表示不鉴定,默认值是1,如果要鉴定软件包必须要写gpgkey,不然就会报错
#gpgcheck=1
#gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[base]
name=baseos
baseurl=https://mirrors.aliyun.com/centos-stream/9-stream/BaseOS/x86_64/os/
gpgcheck=0

这里我们配置的是mirrors.aliyun.com网站的网络源,现在浏览器上输入mirrors.aliyun.com
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
将链接复制到baserul中,删除?(包括?)之后的内容
在这里插入图片描述

其他资源网站

配置本地源

注:配置本地源之前,需要先挂载光盘。

#在挂载前先在根目录下创建名为guangpan挂载目录
[root@loaclhost ~]# mkdir /guangpan
#再使用mount进行挂载
[root@loaclhost ~]# mount /dev/sr0 /guangpan
mount: /guangpan: WARNING: source write-protected, mounted read-only.
[root@loaclhost ~]# ll /guangpan
总用量 44
dr-xr-xr-x. 1 root root  2048 1027  2022 AppStream
dr-xr-xr-x. 1 root root  2048 1027  2022 BaseOS
dr-xr-xr-x. 1 root root  2048 1027  2022 EFI
-r--r--r--. 1 root root  8154 1027  2022 EULA
-r--r--r--. 1 root root  1455 1027  2022 extra_files.json
-r--r--r--. 1 root root 18092 1027  2022 GPL
dr-xr-xr-x. 1 root root  2048 1027  2022 images
dr-xr-xr-x. 1 root root  2048 1027  2022 isolinux
-r--r--r--. 1 root root   103 1027  2022 media.repo
-r--r--r--. 1 root root  1669 1027  2022 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root  3682 1027  2022 RPM-GPG-KEY-redhat-release
#其中,rpm包在AppStream/Packages中和BaseOS/Packages中

因为我们已经创建了一个网络源,所以本地源,我们就作为一个备份bf使用

[root@loaclhost ~]# touch /etc/yum.repos.d/bendi.repo.bf

[root@loaclhost ~]# vim /etc/yum.repos.d/bendi.repo.bf
[root@loaclhost ~]# cat /etc/yum.repos.d/bendi.repo.bf
[guangpan-app]
name=guangpan-appstream
baseurl=file:///guangpan/AppStream
pgpcheck=1
pgpkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release


[guangpan-base]
name=guangpan-baseos
baseurl=file:///guangpan/BaseOS
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

yum/dnf工具管理软件包

#查看包、包组相关信息
yum repolist [all] #查看系统中yum资源库配置信息
yum list all #列出仓库里所有可安装的软件包
yum list installed [包名] #列出己经安装的所有的或指定的rpm包(包名中可使用匹配符)
yum info 包名 #查看指定软件包的详细信息
yum grouplist #查看仓库里而所有包组
yum groupinfo 包组名 #查看指定包组里而的详细信息
#安装、更新包和包组
yum install [-y] 包名 #安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直
接回答yes
yum update [-y] 包名 #升级指定的软件包或主机中所有已安装的软件包
yum groupinstall 包组名 #安装指定包组里面的所有包
#卸载软件包
yum remove [-y] 包名 #卸载已经安装在系统中的指定的软件包
#搜索文件由哪个包产生
yum provides 文件名 #查找指定的文件属于哪个包
yum whatprovides /etc/fstab #查看这个文件是由那个包提供的
#模糊搜索包名
yum search 模糊包名 #查看模糊包名的软件包
#清空缓存
yum clean packages all #清除下载到本机的指定的软件包或所有软件包的yum源缓存
yum makecache     制作缓存
#可以查看当前启用的仓库
[root@loaclhost ~]# yum repolist all
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

仓库 id                             仓库名称                               状态
app                                 appstream                              启用
base                                baseos                                 启用
#查看软件是否安装
[root@loaclhost ~]# yum list httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

上次元数据过期检查:0:29:10 前,执行于 2023年08月01日 星期二 23时32分24秒。
已安装的软件包
httpd.x86_64                         2.4.57-2.el9                          @app
可安装的软件包
httpd.x86_64                         2.4.57-3.el9                          app
#查看软件包是否安装
[root@loaclhost ~]# yum list installed httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

已安装的软件包
httpd.x86_64                         2.4.57-2.el9                          @app
#查看指定软件包的详细信息
[root@loaclhost ~]# yum info httpd
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

上次元数据过期检查:0:30:55 前,执行于 2023年08月01日 星期二 23时32分24秒。
已安装的软件包
名称         : httpd
版本         : 2.4.57
发布         : 2.el9
架构         : x86_64
大小         : 59 k
源           : httpd-2.4.57-2.el9.src.rpm
仓库         : @System
来自仓库     : app
概况         : Apache HTTP Server
URL          : https://httpd.apache.org/
协议         : ASL 2.0
描述         : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.

可安装的软件包
名称         : httpd
版本         : 2.4.57
发布         : 3.el9
架构         : x86_64
大小         : 48 k
源           : httpd-2.4.57-3.el9.src.rpm
仓库         : app
概况         : Apache HTTP Server
URL          : https://httpd.apache.org/
协议         : ASL 2.0
描述         : The Apache HTTP Server is a powerful, efficient, and extensible
             : web server.
#查看所有已经安装的和未来可以安装的软件包信息
[root@loaclhost ~]# yum list all
[root@loaclhost ~]# yum list
 #卸载已经安装在系统中的指定的软件包
[root@loaclhost ~]# yum remove -y httpd
#安装指定的软件包,-y则在工作过程中需要使用者响应, 这个选个参数可以直接回答yes
[root@loaclhost ~]# yum install -y httpd
#升级指定的软件包或主机中所有已安装的软件包
[root@loaclhost ~]# yum update -y httpd
 #查找指定的文件属于哪个包
[root@loaclhost ~]# yum provides 文件名
#模糊搜索包名
#查看模糊包名的软件包
[root@loaclhost ~]# yum search 模糊包名    
#清空缓存
#清除下载到本机的指定的软件包或所有软件包的yum源缓存
[root@loaclhost ~]# yum clean packages all
[root@loaclhost ~]# yum clean all

yum localinstall

yum localinstallyum 软件包管理器的一个命令,用于从本地文件系统中安装 RPM 包及其依赖项当你有一个 RPM 文件,并且希望使用 yum 来自动处理任何依赖关系时,这个命令会非常有用。

基本用法如下:

[root@server ~]# yum localinstall /path/to/package.rpm

在这个命令中,你需要将 /path/to/package.rpm 替换为你要安装的 RPM 文件的实际路径。

当你运行 yum localinstall 时,yum 会做以下几件事情:

  • 检查指定的 RPM 包是否存在于本地文件系统中。
  • 解析 RPM 包的依赖关系,并确定哪些其他包是必需的。
  • 从启用的仓库中查找并安装任何缺失的依赖项。
  • 安装指定的 RPM 包及其所有依赖项。

这个命令特别有用,因为它能够自动处理依赖关系,而不仅仅是安装单个 RPM 文件。如果你只是简单地使用 rpm 命令来安装 RPM 文件,而没有先安装所有依赖项,那么安装可能会失败或导致系统不稳定。

  • 请注意,如果本地 RPM 文件中的依赖项在启用的仓库中不可用,yum localinstall 可能会失败。在这种情况下,你可能需要手动安装缺失的依赖项,或者从其他来源获取它们。

yum provides

yum provides用于查找提供特定文件的软件包。这个命令可以帮助用户确定哪个软件包包含了某个特定的文件或命令。它的语法是:yum provides [选项] <文件或命令>

例如,如果要查找提供 /usr/bin/vim 的软件包,可以运行以下命令:yum provides /usr/bin/vim。命令的输出将显示提供该文件的软件包及其版本信息。

此外,yum provides 命令还支持一些选项,比如:

  • -f:显示软件包的完整名称。
  • -l:显示软件包的所有文件。
  • -r:显示软件包的依赖关系。

请注意,为了使用 yum provides 命令,用户需要具有 root 用户权限或具有 sudo 权限。这个命令在解决“只知道需要的命令或文件,但不知道它属于哪个软件包”的问题时非常有用。

[root@server ~]# yum provides */ping   #寻找ping命令对应的软件包
正在更新 Subscription Management 软件仓库。
无法读取客户身份

本系统尚未在权利服务器中注册。可使用 subscription-manager 进行注册。

上次元数据过期检查:0:56:12 前,执行于 2024年03月25日 星期一 10时14分03秒。
bash-completion-1:2.11-4.el9.noarch : Programmable completion for Bash
仓库        :@System
匹配来源:
文件名    :/usr/share/bash-completion/completions/ping

bash-completion-1:2.11-4.el9.noarch : Programmable completion for Bash
仓库        :base
匹配来源:
文件名    :/usr/share/bash-completion/completions/ping

iputils-20210202-7.el9.x86_64 : Network monitoring tools including ping
仓库        :@System
匹配来源:
文件名    :/usr/bin/ping
文件名    :/usr/sbin/ping

iputils-20210202-7.el9.x86_64 : Network monitoring tools including ping
仓库        :base
匹配来源:
文件名    :/usr/bin/ping
文件名    :/usr/sbin/ping

iputils-20210202-8.el9.x86_64 : Network monitoring tools including ping
仓库        :base
匹配来源:
文件名    :/usr/bin/ping
文件名    :/usr/sbin/ping

iputils-20210202-9.el9.x86_64 : Network monitoring tools including ping
仓库        :base
匹配来源:
文件名    :/usr/bin/ping
文件名    :/usr/sbin/ping

irssi-1.2.2-12.el9.x86_64 : Modular text mode IRC client with Perl scripting
仓库        :app
匹配来源:
文件名    :/usr/share/irssi/help/ping

qt5-qtbase-examples-5.15.9-4.el9.i686 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-4.el9.x86_64 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib64/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-6.el9.i686 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-6.el9.x86_64 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib64/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-7.el9.i686 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-7.el9.x86_64 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib64/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-8.el9.i686 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-8.el9.x86_64 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib64/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-9.el9.i686 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib/qt5/examples/dbus/pingpong/ping

qt5-qtbase-examples-5.15.9-9.el9.x86_64 : Programming examples for qt5-qtbase
仓库        :app
匹配来源:
文件名    :/usr/lib64/qt5/examples/dbus/pingpong/ping

[root@server ~]#

进程简介

(1)程序、进程、线程

程序: 二进制文件,文件存储在磁盘中,例如/usr/bin/目录下
进程: 进程是已启动的可执行程序的运行实例。(文件被执行后就变成了一个进程)

  • 进程和程序并不是一一对应的关系,相同的程序运行在不同的数据集上就是不同的进程
  • 进程还具有并发性和交往性,而程序却是封闭的

线程: 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

  • 一个进程可以拥有多个线程,而一个线程同时只能被一个进程所拥有
  • 线程不能单独执行,但是每一个线程都有程序的入口、执行序列以及程序出口,它必须组成进程才能被执行。

(2)进程分类

在这里插入图片描述

后台进程管理systemctl

不随终端的关闭而导致服务程序关闭,软件要一直不停的运行。

#启动http服务
[root@loaclhost ~]# systemctl start httpd

#关闭httpd服务(stop或关机都可以)
[root@loaclhost ~]# systemctl stop httpd

#关闭防火墙服务
[root@loaclhost ~]# systemctl stop firewalld

#查看服务运行状态
[root@loaclhost ~]# systemctl status httpd

#设置http服务开机自启动
[root@loaclhost ~]# systemctl enable --now httpd

#关闭http服务开机自启动
[root@loaclhost ~]# systemctl disable --now httpd

#重启http服务
[root@loaclhost ~]# systemctl restart httpd

查看进程运行信息(ps)

  • -a :显示所有用户的进程
  • -u :显示当前用户名和启动时间
  • -x :显示 没有控制终端的进程
  • -e :显示所有进程,包括没有控制终端的进程
  • -l :长格式显示
  • -w:宽行显示,可以使用多个 w 进行加宽显示
  • -f:做一个更完整的输出
#查看当前用户的进程
[root@loaclhost ~]# ps -l

#查看所有用户执行的进程的详细信息
[root@loaclhost ~]# ps -le

#查看当前用户的进程
[root@loaclhost ~]# ps -u

#查看指定进程
[root@loaclhost ~]# ps -aux | grep httpd 

[root@loaclhost ~]# ps -ef | grep httpd

在这里插入图片描述

动态查看进程(top)

[root@loaclhost ~]# top

服务的端口信息

[root@server ~]# cat /etc/services

ss命令

在 Linux 系统中,ss 命令用于查看系统套接字统计信息。当你使用 ss -lntup 命令时,你正在请求显示特定类型的套接字信息。下面是这个命令的分解:

  • -l:仅显示监听(listening)状态的套接字。
  • -n:以数字形式显示地址和端口号,不进行任何网络到服务的名称解析。
  • -t:仅显示 TCP 套接字。
  • -u:仅显示 UDP 套接字。注意,这里的 -u-t 通常是互斥的,但在这个命令中同时包含它们可能会导致混淆。通常,你会根据想要查看的套接字类型(TCP 或 UDP)选择其中一个选项。由于 -t 已经在前面,-u 在这里可能是多余的,或者是一个错误。
  • -p:显示与每个套接字关联的进程。

所以,ss -lntup 命令的意图是显示所有监听状态的 TCP 套接字,并以数字形式显示地址和端口号,同时显示与每个套接字关联的进程。但是,由于 -t-u 同时存在,这个命令可能不会按预期工作,除非你的意图是同时查看 TCP 和 UDP 套接字(但这与 -t 选项相矛盾)。

如果你只想查看监听状态的 TCP 套接字,你应该使用 ss -ltnp。如果你想查看 UDP 套接字,则应该使用 ss -lunp。注意,这里没有 -n-p 的顺序要求,你可以按照任何顺序排列它们。

执行 ss -lntup 命令后,你可能会看到类似以下的输出:

State       Recv-Q Send-Q Local Address:Port               Process                     
LISTEN      0      128    0.0.0.0:22                      sshd: /usr/sbin/sshd -D    
LISTEN      0      100    127.0.0.1:3306                mysqld: mysqld_safe (mysqld) 
...

在这个输出中:

  • State 列显示了套接字的状态(在这个情况下,所有条目都应该是 LISTEN)。
  • Recv-QSend-Q 列显示了接收和发送队列的长度。
  • Local Address:Port 列显示了本地地址和端口号。
  • Process 列显示了与每个套接字关联的进程及其命令行(如果 -p 选项有效的话)。

如果 ss 命令无法解析进程信息(例如,你没有足够的权限),Process 列可能会显示为空白。在这种情况下,你可能需要使用 sudo 来以 root 用户身份运行 ss 命令。

[root@server ~]# ss -lntup
Netid  State   Recv-Q  Send-Q   Local Address:Port      Peer Address:Port  Process
udp    UNCONN  0       0              0.0.0.0:52349          0.0.0.0:*      users:(("avahi-daemon",pid=871,fd=14))
udp    UNCONN  0       0              0.0.0.0:5353           0.0.0.0:*      users:(("avahi-daemon",pid=871,fd=12))
udp    UNCONN  0       0            127.0.0.1:323            0.0.0.0:*      users:(("chronyd",pid=909,fd=5))
udp    UNCONN  0       0                 [::]:51283             [::]:*      users:(("avahi-daemon",pid=871,fd=15))
udp    UNCONN  0       0                 [::]:5353              [::]:*      users:(("avahi-daemon",pid=871,fd=13))
udp    UNCONN  0       0                [::1]:323               [::]:*      users:(("chronyd",pid=909,fd=6))
tcp    LISTEN  0       128            0.0.0.0:22             0.0.0.0:*      users:(("sshd",pid=925,fd=3))
tcp    LISTEN  0       128          127.0.0.1:631            0.0.0.0:*      users:(("cupsd",pid=922,fd=7))
tcp    LISTEN  0       128               [::]:22                [::]:*      users:(("sshd",pid=925,fd=4))
tcp    LISTEN  0       128              [::1]:631               [::]:*      users:(("cupsd",pid=922,fd=6))

netstat

netstat 是一个在 Unix 和类 Unix 系统(包括 Linux)中常用的命令行工具,用于显示网络连接、路由表、接口统计等网络相关信息。它可以帮助管理员和网络工程师诊断网络问题、查看当前的网络连接状态以及监控网络流量。

当您在终端中执行 netstat 命令时,它通常会显示当前系统上的网络连接和监听端口的状态。

默认情况下,不带任何参数的 netstat 命令将显示活动的 TCP 连接、监听的 TCP 和 UDP 端口以及相关的统计信息。例如:

[root@server ~]# netstat
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1234/mysqld         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      5678/sshd           
tcp        0     52 192.168.1.100:22        192.168.1.5:49152       ESTABLISHED 9876/sshd: user     
udp        0      0 0.0.0.0:68              0.0.0.0:*                           123/dhclient        
...

输出中的列通常包括:

  • Proto: 协议类型(TCP 或 UDP)。
  • Recv-QSend-Q: 接收队列和发送队列中的字节数。
  • Local Address: 本地地址和端口号。
  • Foreign Address: 远程地址和端口号(对于已建立的连接)。
  • State: 连接状态(例如 LISTEN, ESTABLISHED, TIME_WAIT 等)。
  • PID/Program name: 与该连接相关联的进程 ID 和程序名称(如果可用)。

netstat 命令也支持很多选项,用于过滤和格式化输出。一些常用的选项包括:

  • -a: 显示所有活动的网络连接和监听的端口。
  • -t: 仅显示 TCP 连接。
  • -u: 仅显示 UDP 连接。
  • -l: 仅显示监听的套接字。
  • -n: 显示数字形式的地址和端口号,而不是尝试解析为主机名、服务名等。
  • -p: 显示与每个套接字相关联的进程 ID 和程序名称。
  • -r: 显示路由表。
  • -s: 显示网络统计信息。

例如,要仅查看监听的 TCP 端口,可以使用:

netstat -tln

请注意,某些 Linux 发行版(如较新版本的 CentOS 和 RHEL)默认可能没有安装 netstat 工具,而是推荐使用 ss 命令作为 netstat 的替代品。如果您找不到 netstat 命令,可以尝试使用 ss 命令,它提供了类似的功能和选项。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

^~^前行者~~~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值