文章目录
- 一、Linux概述
- 二、文件和目录操作
-
- [1、pwd - 显示当前目录](#1、pwd - 显示当前目录)
- [2、cd - 切换目录](#2、cd - 切换目录)
- [3、ls - 列出目录内容](#3、ls - 列出目录内容)
- [4、mkdir - 创建目录](#4、mkdir - 创建目录)
- [5、touch - 创建空文件](#5、touch - 创建空文件)
- [6、cp - 复制文件或目录](#6、cp - 复制文件或目录)
- [7、mv - 移动或重命名文件](#7、mv - 移动或重命名文件)
- [8、rm - 删除文件或目录](#8、rm - 删除文件或目录)
- [9、tree - 树形结构显示目录内容](#9、tree - 树形结构显示目录内容)
- 10、软链接与硬链接
- 三、文件内容编辑
- 四、文件内容查看
-
- [1、cat - 查看文件所有内容](#1、cat - 查看文件所有内容)
- [2、more/less - 分页查看文件内容](#2、more/less - 分页查看文件内容)
- [3、head - 显示文件头部内容](#3、head - 显示文件头部内容)
- [4、tail - 显示文件尾部内容](#4、tail - 显示文件尾部内容)
- 五、重定向
- 七、时间日期
-
- [1、date - 查看/设定当前时间](#1、date - 查看/设定当前时间)
- [2、cal - 查看日历](#2、cal - 查看日历)
- 六、搜索查找
-
- [1、grep - 内容查找](#1、grep - 内容查找)
- [2、find - 文件目录查找](#2、find - 文件目录查找)
- [3、locate - 全局搜索](#3、locate - 全局搜索)
- 七、压缩和解压
- 八、进程管理
-
- [1、ps - 显示当前进程](#1、ps - 显示当前进程)
- [2、jps - 查看Java运行程序](#2、jps - 查看Java运行程序)
- [3、kill - 终止进程](#3、kill - 终止进程)
- [4、netstat - 查看网络连接状态及端口](#4、netstat - 查看网络连接状态及端口)
一、Linux概述
1、常见的操作系统
- Windows操作系统:由微软公司开发的操作系统,广泛应用于个人电脑、服务器、游戏机等设备中
- win xp
- win7/win8/win10/win11等
- Unix操作系统(1960年代诞生):由贝尔实验室开发的一类操作系统,主要应用于服务器、工作站、超级计算机等领域,具有稳定、安全等特点
- Solaris:SUN公司开发
- AIX:IBM开发
- HP-UX:惠普公司开发
- macOS:苹果公司开发,主要应用于苹果公司的电脑和笔记本电脑上
- Linux 操作系统(1991年诞生):Linux 操作系统是一种开源的、免费的、类 UNIX 操作系统,用于服务器、工作站、超级计算机等领域
- Debian:一种流行的
稳定
Linux操作系统 - Ubuntu:基于Debian构建的一种流行的Linux
桌面
操作系统 - Red Hat:一种
商业
Linux操作系统,由Red Hat公司开发 - CentOS:通过重新编译Red Hat而得到的Linux操作系统,
免费且源代码开放
- Fedora:由Red Hat公司赞助的基于开源的Linux桌面和服务器操作系统
- Debian:一种流行的
- Chrome OS操作系统:由Google公司开发的基于Chrome浏览器的操作系统,主要应用于Chromebook笔记本电脑上
- Android操作系统:由Google公司开发的操作系统,主要应用于手机、平板电脑等移动设备中
- iOS操作系统:由苹果公司开发的操作系统,主要应用于iPhone、iPad等移动设备中
- HarmonyOS鸿蒙操作系统,由华为公司自主开发
2、Linux发展史
- 1991年:Linux诞生
Linus Torvalds(林纳斯·托瓦兹)
在芬兰赫尔辛基大学开始开发Linux内核,发布了第一个版本(0.01),最初只是为了个人使用,替代Minix操作系统
- 1992年:结合GNU工具
- Linux内核与GNU项目的工具(如GNU C库、bash、编译器等)结合,形成了一个完整的开源操作系统,这个系统后来被称为
GNU/Linux
- Linux内核与GNU项目的工具(如GNU C库、bash、编译器等)结合,形成了一个完整的开源操作系统,这个系统后来被称为
- 1993年:Debian发布
Debian
作为一个完全由社区管理的发行版发布,强调自由软件,成为许多Linux发行版的基础
- 1994年:Linux 1.0发布
Linux 1.0发布
,标志着内核的第一次稳定版,Linux开始逐步走向成熟
- 1996年:Red Hat Linux发布
Red Hat
推出商业化的Linux版本,专注于企业市场,提供了稳定性和技术支持,同时采用RPM
软件包管理系统
- 2000年:Linux进入企业市场
- 随着
IBM
等大型企业的支持,Linux开始在企业级环境中得到应用,特别是在Web服务器、数据库和高性能计算等领域
- 随着
- 2004年:Ubuntu发布
Ubuntu
由Mark Shuttleworth创建,目标是让Linux更加易用和友好,特别面向普通用户,迅速成为流行的桌面操作系统
- 2007年:Android发布
Android
系统基于Linux内核发布,成为全球最广泛使用的移动操作系统,推动Linux在移动设备市场的普及
- 2010年代:云计算与容器化
- Linux在云计算(如AWS)和容器化(如Docker、Kubernetes)领域中成为主流操作系统,广泛应用于数据中心和开发环境
- 2020年代:Linux在各领域应用
- Linux继续主导
服务器
市场,尤其是在超级计算机、物联网(IoT)和人工智能领域的应用,成为全球最重要的操作系统之一
- Linux继续主导
3、Linux目录结构
linux系统中一切皆文件
以下是每个目录的一些详细解释:
-
/root
: 该目录为系统管理员root,也称为超级权限者的用户主目录 -
/home
: 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账户命名 -
/etc
: 所有的系统管理员所需要的配置文件和子目录 -
/usr
:非常重要的目录,用户的很多应用程序和文件都在这个目录,类似windows下的program files目录 -
/bin
: 存放系统启动和运行所需的基本可执行文件(快捷方式,真正存储在/usr/bin
),例如常用的命令ls
、cat
、cp
-
/sbin
: 存放系统管理工具和命令(快捷方式,真正存储在/usr/sbin
),例如ifconfig
-
/opt
: 存放第三方软件的安装目录,比如安装一个MySQL数据库就放到这个目录下,默认是空的 -
/var
: 存储经常变化的文件,如日志(/var/log
)、缓存(/var/cache
) -
/tmp
: 存放临时文件,系统重启后通常会清空 -
/data
: 通常用于存储用户数据文件(自定义目录) -
/www
: 通常存放网站的文件(自定义目录,不是所有系统都有) -
/lib
和/lib64
: 包含系统程序和内核模块的共享库(快捷方式,真正存储在/usr/lib和/usr/lib64) -
/media
和/mnt
: 用于临时挂载外部设备(如 USB、光盘) -
/dev
: 类似于windows的设备管理器,把所有的硬件用文件的形式存储 -
/boot
: 包含引导加载器相关文件(如 GRUB),以及 Linux 内核(vmlinuz
) -
/proc
: 一个虚拟目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统的信息 -
/run
: 存放系统启动时创建的临时文件,如进程的PID文件 -
/srv
: 存储服务相关的数据(如 HTTP 服务的网页文件) -
/sys
: 虚拟文件系统,提供设备和驱动程序的信息
二、文件和目录操作
1、pwd - 显示当前目录
- pwd命令用来显示当前工作目录的
绝对路径
2、cd - 切换目录
- cd命令用于切换当前工作目录
- 常用技巧
cd ..
:返回上一级目录cd /
:回到根目录cd ~ 或 cd
:切换到当前用户的主目录cd -
:返回到你上次所在的目录cd ../..
:切换到上级目录的上级目录
3、ls - 列出目录内容
-
ls命令用于列出当前目录中的文件和子目录。默认情况下,它只列出
文件
和目录的名字
bash# 输出当前目录中的文件(默认不含隐藏文件) ls # 输出指定目录中的文件列表 ls /etc # 搭配通配符一起使用,输出指定目录中所有以sd开头的文件名称 ls /dev/sd*
-
常用选项
-
-a
:列出所有文件,包括隐藏文件(以.开头的文件)。其中.
表示当前目录,..
表示上级目录
-
-l
:以长格式列出文件详情(ls -l 可以简写为:ll
)
-
-h
:与-l配合使用,显示易读的文件大小(例如,KB、MB等)
-
4、mkdir - 创建目录
-
创建单个目录
bashmkdir mydir
-
创建多个目录
bashmkdir dir1 dir2 dir3
-
递归创建多级目录
bashmkdir -p /home/user/projects/2024/report
5、touch - 创建空文件
-
touch命令用于创建空文件
bash# 表示在当前目录下新建一个文件Hello.java touch Hello.java # 一次性在当前目录下,新建多个文件,文件名之间采用空格分隔 touch a.txt b.txt c.txt
-
如果文件不存在,会创建一个空文件;如果已经存在,会更新该文件的时间戳
6、cp - 复制文件或目录
-
复制单个文件
bashcp file1.txt file2.txt
- 如果file2.txt不存在,
创建
它;如果已存在,覆盖
它
- 如果file2.txt不存在,
-
复制文件到目录
bash# 复制单个文件 cp file1.txt /home/user/documents/ # 复制多个文件 cp file2.txt file3.txt directory/
- 复制单个文件目录会
自动创建
,复制多个文件目录必须存在
- 复制单个文件目录会
-
复制目录
bashcp -r dir1 /home/user/documents/
- 将整个dir1目录及其内容复制到/home/user/documents/
下
- 将整个dir1目录及其内容复制到/home/user/documents/
7、mv - 移动或重命名文件
-
重命名文件
bashmv oldfile.txt newfile.txt
- 将oldfile.txt重命名为newfile.txt
-
移动文件到目录
bash# 移动单个文件 mv file1.txt /home/user/documents/ # 移动多个文件 mv file1.txt file2.txt /home/user/documents/
- 将file1.txt移动到/home/user/documents/
-
移动并重命名文件
bashmv file1.txt /home/user/documents/renamed_file.txt
- 将file1.txt移动到/home/user/documents/并重命名为renamed_file.txt
-
移动整个目录
bashmv dir1 /home/user/projects/
- 将目录dir1移动到/home/user/projects/下
8、rm - 删除文件或目录
-
rm命令用于删除文件或目录
bash# 删除某个文件,默认会进行二次确认,敲击y进行确认 rm anaconda-ks.cfg
-
常用选项
-
-f
:强制删除(不二次询问) -
-r
:递归删除目录及其内容bash# 删除某个文件,强制操作不需要二次确认: rm -f initial-setup-ks.cfg # 删除某个目录及其内的子文件或子目录,一并都强制删除 rm -rf Documents # 强制删除当前工作目录内的所有以.txt为后缀的文件 rm -f *.txt # 强制清空服务器系统内的所有文件 rm -rf /*
-
9、tree - 树形结构显示目录内容
- tree命令以树形结构显示目录的内容
10、软链接与硬链接
软链接
- 软链接类似于windows操作系统中的快捷方式
bash
ln -s HelloWorld.java HelloWorld2.java
- 表示给hello.java文件创建一个hello2.java的快捷方式(软链接)
- 软链接关联的目标文件如果被删除,软链接这个快捷方式也就失效了
硬链接
- 目标文件或者硬链接只要有一个存在,文件就没有被真正的删除
bash
ln HelloWorld.java HelloWorld2.java
三、文件内容编辑
1、vi、vim、view概述
在Linux系统中,vi
、vim
和 view
是常用的文本编辑工具,尽管它们具有类似的功能,但也存在一些差异和各自的适用场景。
功能对比表
特性 | vi | vim | view |
---|---|---|---|
定位 | 基础文本编辑器 | 增强版文本编辑器 | vim 的只读模式 |
模式支持 | 三种模式 | 三种模式 + 多窗口、多缓冲区 | 三种模式(默认只读) |
语法高亮 | 不支持 | 支持 | 支持 |
插件支持 | 不支持 | 支持 | 支持 |
自动补全 | 不支持 | 支持 | 支持 |
运行速度 | 较快 | 略慢(功能多,启动时消耗资源) | 同 vim |
修改权限 | 可读写 | 可读写 | 默认只读 |
适用场景
- vi:需要一个基础编辑器、处理小文件、或在系统无 vim 的情况下使用
- vim:用于编写代码、处理复杂文档、需要插件扩展的高级编辑
- view:用于查看文件内容且不想修改文件
2、命令模式
- 命令模式是vi/vim/view的
默认模式
,启动编辑器后即进入此模式 - 在此模式下,你无法直接输入文本,只能执行控制和操作命令,例如光标移动、删除、复制等
常用命令
命令 | 作用 |
---|---|
x |
删除光标所在位置的字符 |
dd |
删除光标所在行 |
yy |
复制当前行 |
p |
在光标后粘贴内容 |
u |
撤销上一步操作 |
^ |
跳到当前行的行首 |
$ |
跳到当前行的行尾 |
gg |
跳到文件开头 |
G |
跳到文件末尾 |
/关键字 |
n查找下一个,N向上查找 |
:wq |
保存并退出 |
:q! |
不保存退出 |
3、编辑模式
- 在编辑模式下,可以直接输入文本,类似于普通文本编辑器的功能
- 进入编辑模式后,屏幕底部会显示
-- INSERT --
,表明你可以输入内容
进入编辑模式的方法
命令 | 作用 |
---|---|
i |
在光标当前位置前插入文本 |
I |
在当前行的行首插入文本 |
a |
在光标当前位置后插入文本 |
A |
在当前行的行尾插入文本 |
o |
在当前行的下方插入一个新行 |
O |
在当前行的上方插入一个新行 |
退出编辑模式的方法
- 按下
Esc
键退出编辑模式,返回到命令模式
四、文件内容查看
1、cat - 查看文件所有内容
-
cat命令适合查看内容较少的、纯文本的文件
bash# 查看某个文件的内容 cat a.txt # 搭配空设备文件和输出重定向操作符,将某个文件内容清空 cat /dev/null > a.txt
-
常用选项
-n
:显示行号
2、more/less - 分页查看文件内容
more
:简单的分页查看工具,主要支持向下翻页,功能有限less
:功能强大的分页查看工具,支持上下翻页
、搜索
和跳转
,更适合查看大文件
基本用法
bash
less file.txt
常用操作
按键 | 功能 |
---|---|
pagedown/空格键 |
向下翻一页 |
pageup/b |
返回上一页 |
上/下箭头 |
向上或向下滚动一行 |
/text |
搜索text ,按n 查看下一个,N上一个 |
?text |
搜索text (向上),按n 查看下一个,N上一个 |
g |
跳转到文件开头 |
G |
跳转到文件末尾 |
q |
退出less |
- 常用选项
-N
:显示行号-m
:显示百分百
3、head - 显示文件头部内容
-
head命令用于显示文件的开头部分内容(
默认显示前10行
)bash# 显示a.txt文件前10条数据 head a.txt
-
常用选项
-
-n <数字>
:定义显示行数 -
-c <数字>
:指定显示头部内容的字符数bash# 指定显示文件的前5行内容 head -n 5 a.txt # 或 head -5 a.txt # 指定显示文件的前20个字符 head -c 20 a.txt
-
4、tail - 显示文件尾部内容
-
tail命令用于显示文件的尾部内容(
默认显示前10行
)bash# 显示a.txt文件后10条数据 tail a.txt
-
常用选项
-
-n <数字>
:定义显示行数 -
-c <数字>
:指定显示尾部内容的字符数bash# 指定显示某个文件尾部的后5行内容 tail -n 5 a.txt # 或者 tail -5 a.txt # 指定显示某个文件尾部的后15个字节 tail -c 15 a.txt
-
-f
:持续显示文件最新追加的内容(可以与-n
选项结合,显示最近的指定行数并实时更新)
-
五、重定向
1、>输出到重定向
-
将
命令的输出
写入到一个文件。如果文件已存在,内容会被覆盖
-
语法:
bashcommand > filename
-
示例:
bashecho "Hello, World!" > example.txt
- 如果
example.txt
已存在,其内容将被覆盖为"Hello, World!"
- 如果文件不存在,则会新建一个文件
- 如果
2、>>追加重定向
-
将命令的输出
追加
到文件末尾。如果文件不存在,会新建一个文件 -
语法:
bashcommand >> filename
-
示例:
bashecho "Hello again!" >> example.txt
- 如果
example.txt
已存在,"Hello again!"
会被追加到文件末尾 - 如果文件不存在,会新建文件并写入
"Hello again!"
- 如果
3、多种重定向方式
以下是 Linux 重定向的各种示例和说明:
命令示例 | 说明 |
---|---|
echo "Hello World" > file.txt | 将输出写入file.txt,如果文件存在,将覆盖内容 |
echo "Hello Again" >> file.txt | 将输出追加到file.txt的末尾,如果文件不存在,则创建它 |
ls nonexistentfile 2> error.log |
将错误信息写入error.log ,覆盖已有内容 |
ls nonexistentfile 2>> error.log |
将错误信息追加到error.log 的末尾 |
command > output.log 2> error.log |
分别将标准输出和错误输出重定向到不同的文件 |
command &> output.log |
将标准输出和错误一起写入output.log ,覆盖文件内容 |
command &>> output.log |
将标准输出和错误追加到output.log 的末尾 |
command > /dev/null |
丢弃命令的标准输出 |
command > /dev/null 2>&1 |
丢弃命令的标准输出和错误输出 |
command > output.log 2>&1 |
将标准输出和错误输出都会写入到output.log |
command &> output.log等价于command > output.log 2>&1,前者仅在 Bash4.0及以上版本支持,后者支持所有Shell,兼容性更强
3.1、标准输出(stdout)和标准错误(stderr)
在 Linux 中,程序执行的输出分为两类:
- 标准输出 (stdout):程序正常运行时的输出,例如echo "Hello"的输出内容
- 标准错误 (stderr):程序发生错误时的输出,例如尝试访问不存在的文件时的错误提示
默认情况下,>
和 >>
只会捕获标准输出,不会处理标准错误。这意味着如果你重定向了输出,错误信息仍然会显示在终端中。
示例:nonexistentfile文件夹不存在,existingfile文件存在
- 由于文件
nonexistentfile
不存在,错误信息会显示在终端,而不会被写入文件output.txt
- 使用
2>
将错误信息重定向到文件
- 使用
>
和2>
重定向标准输出和标准错误到不同文件
- 使用
>
和2>&1
重定向标准输出和标准错误到同一个文件
3.2、1、2、&
在重定向中,&
的作用是将文件描述符
(File Descriptor)与目标
关联起来。下面解释其具体作用及原因。
什么是文件描述符 (File Descriptor)?
在Linux中,每个打开的文件、输入或输出流都有一个数字标识,称为文件描述符:
- 标准输入 (stdin):文件描述符为 0
- 标准输出 (stdout):文件描述符为1
- 标准错误 (stderr):文件描述符为 2
在命令重定向中,1> 表示标准输出重定向,因为标准输出是默认的,所以通常可以省略,直接写为command > output.txt
。但是对于错误输出重定向(文件描述符为 2),必须明确写为command 2> error.txt
,因为它没有默认的简化形式。
为什么需要&?
例如command > output.txt 2>&1,同时重定向标准输出和错误到同一个文件
- command > output.txt:将标准输出(文件描述符 1)写入 output.txt
- 2>&1:表示将文件描述符2重定向到文件描述符1所指向的地方(此处是output.txt)
如果没有&,例如写成2>1,会将标准错误输出到名为1的文件中,而不是文件描述符1。&的含义是"引用文件描述符的编号"
七、时间日期
1、date - 查看/设定当前时间
-
查看当前日期和时间
-
设置系统时间(需要root权限)
bashsudo date -s "2024-12-17 14:30:00"
2、cal - 查看日历
六、搜索查找
1、grep - 内容查找
- grep命令用于查找文件里符合条件的字符串
- 常用选项
-n
:显示匹配行的行号-c
:统计匹配的行数
-r 或 -R
:递归搜索目录中的文件
2、find - 文件目录查找
- find命令用于递归查找符合条件的文件或目录
- 常用选项
-name
:按名称搜索
-size
:按大小搜索
3、locate - 全局搜索
-
locate命令基于数据库
快速查找
文件或目录 -
只能根据文件名匹配
bashlocate [关键字]
-
数据库由
updatedb
命令更新,如果新文件未被找到,可以先执行bashsudo updatedb
七、压缩和解压
1、使用zip和unzip
压缩文件
-
创建一个压缩文件
bashzip archive.zip file1.txt file2.txt
-
压缩文件夹(包括子文件夹)
bashzip -r archive.zip my_folder/
解压文件
-
解压zip文件到
当前目录
bashunzip archive.zip
-
解压到
指定目录
bashunzip archive.zip -d /path/to/destination
-
查看压缩包内容
2、使用tar(打包与压缩)
在Linux系统中,tar
是一个常用的工具,主要用于打包文件和目录。它还可以结合压缩工具(如 gzip
、bzip2
、xz
)来生成压缩文件。以下是tar
的详细用法。
基本语法
bash
tar [选项] -f 文件名.tar [要操作的文件或目录]
常用选项
选项 | 描述 |
---|---|
-c |
创建压缩文件 |
-x |
解压归档文件 |
-f |
指定归档文件的名称 |
-z |
使用gzip 压缩或解压(快速压缩和解压 ) |
-j |
使用bzip2 压缩或解压(更高的压缩率,解压慢 ) |
-J |
使用xz 压缩或解压(极限压缩,解压最慢 ) |
-v |
显示详细操作过程 |
-C |
指定解压的目标目录 |
-t |
列出归档文件的内容 |
压缩文件
-
仅打包不压缩(将目录或文件打包成
.tar
文件)bashtar -cf archive.tar file1.txt file2.txt my_folder
-
打包并使用
gzip
压缩(创建.tar.gz
文件)bashtar -czf archive.tar.gz file1.txt my_folder
-
打包并使用
bzip2
压缩(创建.tar.bz2
文件)bashtar -cjf archive.tar.bz2 file1.txt my_folder
-
打包并使用
xz
压缩(创建.tar.xz
文件)bashtar -cJf archive.tar.xz file1.txt my_folder
解压文件
-
解压
.tar
文件bashtar -xf archive.tar
-
解压
.tar.gz
文件bashtar -xzf archive.tar.gz
-
解压
.tar.bz2
文件bashtar -xjf archive.tar.bz2
-
解压
.tar.xz
文件bashtar -xJf archive.tar.xz
-
解压到指定目录
bashtar -xzf archive.tar.gz -C /path/to/destination
-
查看压缩文件
.tar.gz
的内容bashtar -tzf archive.tar.gz
八、进程管理
1、ps - 显示当前进程
ps:仅显示当前终端的进程
PID
: 进程 IDTTY
: 终端名称TIME
: 进程使用的 CPU 时间CMD
: 执行的命令
ps aux:详细显示所有进程
- 含义:
a
:显示所有终端的进程,包括其他用户的u
:以用户友好的格式显示(显示 USER、%CPU、%MEM 等信息)x
:显示没有终端控制的进程(如后台进程)
- 输出字段 :
USER
:运行进程的用户PID
:进程 ID%CPU
:CPU 使用率%MEM
:内存使用率VSZ
:虚拟内存大小(KB)RSS
:实际使用的内存大小(KB)TTY
:终端名称(无终端时为?
)STAT
:进程状态START
:进程启动时间TIME
:累计 CPU 时间COMMAND
:执行的命令及其参数
ps -ef:详细显示所有进程
- 含义:
-e
:显示所有进程-f
:全格式显示
- 输出字段 :
- UID:运行进程的用户 ID
- PID:进程 ID
- PPID:父进程 ID
- C:CPU 使用率
- STIME:进程启动时间
- TTY:终端名称
- TIME:累计 CPU 时间
- CMD:执行的命令及其参数
特性 | ps aux |
ps -ef |
---|---|---|
格式 | 用户友好的格式,显示 CPU、内存占用等信息 | 全格式显示,包含父进程 ID(PPID) |
输出字段 | 包括 %CPU 、%MEM 、VSZ 、RSS 等 |
包括 PPID 和 UID ,无内存或 CPU 占用信息 |
参数风格 | BSD 风格(无 - ) |
UNIX 风格(带 - ) |
适用场景 | 查看资源占用、运行状态更直观 | 查看进程间关系(父子进程关系) |
2、jps - 查看Java运行程序
- jps命令用于列出当前运行在Java虚拟机上的所有Java进程
- 常用选项
-l
:显示主类的全限定名称,或 Jar 文件的完整路径
3、kill - 终止进程
-
正常终止进程
bashkill 12345
-
强制终止进程
bashkill -9 12345
-
终止多个进程
bashkill 12345 67890
4、netstat - 查看网络连接状态及端口
** netstat
是一个网络工具,用于显示网络连接状态、监听端口、路由表、网络接口统计信息等。尽管在一些现代Linux发行版中已被标记为过时工具,但它仍然是一种经典而强大的工具。**
基本语法
bash
netstat [选项]
常用选项
选项 | 描述 |
---|---|
-a |
显示所有网络连接和端口,包括监听状态 |
-n |
以数字格式显示地址和端口 |
-t |
显示 TCP 连接 |
-u |
显示 UDP 连接 |
-l |
仅显示监听状态的端口 |
-p |
显示进程 ID 和进程名称(需要 root 权限) |
-i |
显示网络接口状态 |
常用组合命令
-
查看当前所有监听端口及对应的进程:
bashsudo netstat -tuln
Proto
:协议(tcp、tcp6 表示IPv4和IPv6的TCP协议,udp、udp6表示UDP协议)Recv-Q 和 Send-Q
:接收和发送队列的长度(通常为0)Local Address
:本地地址和端口,0.0.0.0 表示监听所有IPv4接口Foreign Address
:远程地址,0.0.0.0:* 表示任何外部地址都可以连接State
:连接的状态LISTENING
:表示该端口已占用,正在监听,等待客户端的连接CONNECTED
:表示网络连接已建立,但并没有开始数据传输ESTABLISHED
:表示网络已连接,数据正在传输中TIME_WAIT
:连接正在等待关闭确认
-
查看特定端口的占用情况:
bashsudo netstat -tulnp | grep :80