Linux 套接字文件(Socket File),也称为 Unix 域套接字(Unix Domain Socket),是一种特殊类型的文件,用于同一台机器上进程间通信(IPC)。它提供了一种比网络套接字更高效的通信方式,因为数据不需要经过网络协议栈。
/tmp
或 /var/run
目录),但不像普通文件那样存储数据在 ls -l
命令的输出中,套接字文件的类型标识为 s
:
srwxr-xr-x 1 user group 0 Jan 1 10:00 /tmp/mysocket
文件权限列的第一个字符是 s
表示这是一个套接字文件。
可以使用以下方式创建套接字文件:
socket()
系统调用,指定 AF_UNIX
作为地址族socat
、nc
等工具可以创建和使用套接字文件/var/run/mysqld/mysqld.sock
/var/run/docker.sock
特性 | 套接字文件 | 命名管道 (FIFO) |
---|---|---|
通信方向 | 全双工 | 半双工 |
连接方式 | 面向连接 | 无连接 |
多客户端支持 | 支持 | 不支持 |
数据边界 | 保持消息边界 | 流式 |
查看已打开的套接字:
ss -a -p --unix
删除套接字文件:
rm /path/to/socket
注意:如果仍有进程在使用该套接字,删除文件系统条目不会立即中断通信
套接字文件是 Linux 系统中进程间通信的重要机制,特别适合需要高性能、低延迟的本地通信场景。