linux命令记录 ss 和 lsof
ss
ss
命令是 Linux 中用于查看和分析套接字(sockets)状态的工具,功能类似于 netstat
,但提供了更快、更详细的信息。以下是对 ss
命令的详细介绍,包括常用选项及其用法:
基本用法
ss [选项]
常用选项
- -t:显示 TCP 套接字。
- -u:显示 UDP 套接字。
- -l:仅显示监听状态的套接字。
- -p:显示使用该套接字的进程信息。
- -n:以数字格式显示地址和端口号,避免 DNS 解析。
- -a:显示所有套接字,包括监听和非监听状态的。
- -r:显示路由信息。
- -s:显示统计信息。
示例
-
查看所有 TCP 套接字:
ss -t -a
-
查看所有 UDP 套接字:
ss -u -a
-
查看正在监听的 TCP 套接字:
ss -t -l
-
查看使用某个端口的进程:
ss -t -n -p | grep :80
-
查看详细的套接字统计信息:
ss -s
输出说明
- Netid:套接字类型(如 TCP、UDP)。
- State:套接字的状态(如 ESTAB、LISTEN、CLOSE_WAIT)。
- Recv-Q 和 Send-Q:接收和发送队列的字节数。
- Local Address:Port 和 Peer Address:Port:本地和远程的地址及端口。
- PID/Program name:使用该套接字的进程 ID 和程序名(如果使用了
-p
选项)。
其他注意事项
ss
提供的信息比netstat
更为丰富和精准,因为它直接与 Linux 内核交互。- 在现代 Linux 系统中,
ss
是一个更推荐的工具,尤其是在进行网络故障排查时。
总结
ss
命令是一个强大且高效的网络工具,适用于系统管理员和开发者,用于监控和诊断网络连接和性能问题。了解并熟练使用 ss
可以帮助更好地管理和优化系统网络配置。
lsof
lsof
(List Open Files)命令是 Linux 中用于列出当前系统打开的文件和相关信息的工具。它不仅可以显示打开的文件,还能提供与这些文件相关联的进程信息。以下是 lsof
命令的详细介绍,包括常用选项及其用法。
基本用法
lsof [选项] [文件]
常用选项
- -a:与其他选项结合使用,表示“与”操作。
- -c :仅显示指定命令的打开文件。
- -p :仅显示指定进程 ID 的打开文件。
- -u :仅显示指定用户的打开文件。
- -i:显示网络连接及其状态。
- -n:以数字格式显示网络地址,避免 DNS 解析。
- -s:显示统计信息。
- +D :列出指定目录及其子目录下的打开文件。
示例
-
查看所有打开的文件:
lsof
-
查看某个用户打开的文件:
lsof -u username
-
查看特定进程的打开文件:
lsof -p 1234
-
查看特定文件的打开情况:
lsof /path/to/file
-
查看网络连接:
lsof -i
-
查看某个命令的打开文件:
lsof -c ssh
-
查看某个目录下的打开文件:
lsof +D /path/to/directory
输出说明
- COMMAND:打开文件的进程名称。
- PID:进程 ID。
- USER:拥有该进程的用户。
- FD:文件描述符(如 cwd、txt、mem)。
- TYPE:文件类型(如 REG、DIR、CHR)。
- DEVICE:设备号。
- SIZE/OFF:文件大小或偏移量。
- NODE:索引节点号(inode)。
- NAME:打开文件的名称或路径。
注意事项
lsof
需要较高的权限,有些信息可能需要 root 权限才能查看。- 在大型系统中,输出可能非常庞大,可以结合
grep
和其他命令进行筛选和处理。
总结
lsof
是一个非常强大的工具,适用于监控和排查文件使用情况,尤其在进行系统性能分析和故障排除时,可以帮助用户深入了解系统中正在使用的资源。掌握 lsof
的使用,有助于更好地管理和优化 Linux 系统。