uname
uname
是一个 Linux/Unix 系统中的命令,用于显示操作系统和内核相关的信息。它可以显示系统的名称、
内核版本、硬件架构等信息。
查看操作系统名称
uname
该命令默认只显示系统的名称,例如 Linux
。
查看所有系统信息
uname -a
-a
选项会显示系统的所有信息,包括:
- 内核名称
- 主机名
- 内核版本
- 系统架构
- 操作系统类型等
示例输出:
Linux myhostname 5.11.0-25-generic #27-Ubuntu SMP Fri Jul 9 23:41:42 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
查看内核版本
uname -r
该命令会显示系统正在运行的内核版本。
查看主机名
uname -n
显示当前的主机名。
查看内核的发布版本
uname -v
查看硬件架构
uname -m
该命令会显示系统的架构,例如 x86_64
表示 64 位架构。
显示内核名称
uname -s
显示操作系统类型
uname -o
lsof
lsof 是一个用于显示系统中打开文件的命令。它可以列出当前系统中打开的文件、网络连接、进程等相关信息。
无选项
列出所有打开的文件:在终端中输入 lsof,然后按下回车键。这将显示当前系统中所有打开的文件的列表。
lsof
列出指定进程打开的文件
使用 -p 选项,后跟进程 ID(PID),可以列出特定进程打开的文件。
# 格式
lsof -p <PID>
#示例
lsof -p 1234
列出指定用户打开的文件
使用 -u 选项,后跟用户名,可以列出特定用户打开的文件。
# 格式
lsof -u <username>
#示例
lsof -u john
列出指定文件名相关的进程
使用文件名作为参数,可以列出正在使用该文件的进程。
# 格式
lsof </path/to/file>
#示例
lsof hello.txt
列出网络连接
使用 -i 选项,可以列出当前系统上的网络连接。
# 格式
lsof -i # 将显示所有网络连接的相关信息
lsof -i :<port> # 查看使用该端口的进程
lsof -i tcp # 查看使用指定协议的网络连接
lsof -i udp # 查看使用指定协议的网络连接
lsof -i -u john
#示例
lsof hello.txt
显示目录下打开的文件
使用 +D 选项,可以显示目录下打开的文件。
# 格式
lsof +D <dir>
#示例
lsof +D .
查看某个程序打开的文件
使用 -c 选项,可以查看某个程序打开的文件。
# 格式
lsof -c <command>
#示例
lsof -c sshd
定时刷新
使用 -r 选项,可以定时刷新。
# 格式
lsof -r <second>
#示例
lsof -r 1 -i :3306
lsof -r 1 -u john
lsof -r 1 hello.txt
netstat
netstat
是一个常用的网络状态查看工具,可以显示网络连接、路由表、接口统计等信息。
虽然 netstat
在一些系统中已被替代为 ss
,但它仍然广泛使用。以下是一些常用的 netstat
用法:
无选项
显示已建立连接的端口,不显示正在监听的端口
显示所有网络连接
显示所有已建立连接的端口和所有正在监听的端口
netstat -a
显示监听端口
仅显示正在监听的套接字。
netstat -l
指定协议
- -t 或 --tcp:仅显示 TCP 协议相关的网络连接。
- -u 或 --udp:仅显示 UDP 协议相关的网络连接。
- -U 或 --udplite:仅显示 UDPLite 协议相关的网络连接。
- -S 或 --sctp:仅显示 SCTP 协议相关的网络连接。
- -w 或 --raw:仅显示 RAW 协议相关的网络连接。
- -x 或 --unix:仅显示 UNIX 域套接字相关的连接。
- –ax25:仅显示 AX.25 协议相关的网络连接。
- –ipx:仅显示 IPX 协议相关的网络连接。
- –netrom:仅显示 NET/ROM 协议相关的网络连接。
# 格式
netstat -t
netstat --tcp
netstat -u
netstat --udp
# 示例
netstat -tp | grep sshd
显示进程对应的网络连接
显示每个连接关联的进程信息。
netstat -p
显示路由表
打印内核路由表。
netstat -r
显示网络接口的信息
使用-i选项显示网络接口的发送/接收数据包统计信息。-I和–interfaces可以指定接口名称。
# 格式
netstat -i # 显示所有网路接口信息
netstat -I=<interface> # 显示指定网路接口信息
netstat --interfaces=<interface> # 显示指定网路接口信息
# 示例
netstat -i # 显示所有网路接口信息
netstat -I=lo # 显示指定网路接口信息
netstat --interfaces=lo # 显示指定网路接口信息
不解析主机名、端口和用户名,直接显示数字
使用-n选项。不解析主机名、端口和用户名,直接显示数字。
netstat -tn
显示详细信息
使用-e选项。显示详细信息,如用户 ID、传输的字节数等。
netstat -lte | grep mysql
显示各协议的统计信息
使用-s选项。显示各协议的统计信息。
netstat -ts
netstat -us
netstat -s --icmp
查看实时更新
netstat命令本身没有定时刷新的功能。可以使用watch
命令监控变化。
watch -n 2 netstat -tuln
每两秒刷新一次当前监听的 TCP 和 UDP 端口列表。
注意事项
netstat
可能需要 root 权限才能获取完整信息。- 在某些 Linux 发行版中,
net-tools
包可能需要手动安装,以使用netstat
。 - 对于新的系统和更多功能,可以考虑使用
ss
命令作为netstat
的替代工具。
ss
netstat和ss命令用法基本相同,只不过netstat是老命令,ss是新命令。具体用法可以参考netstat命令。netstat