在Linux系统中,套接字文件(Socket File)是一种特殊类型的文件,用于进程间通信(IPC, Inter-Process Communication)。它允许同一台主机上的不同进程通过文件系统路径进行数据交换,类似于网络套接字(如TCP/IP),但不需要经过网络协议栈,因此效率更高。
类型标识
s
类型(通过 ls -l
查看时,文件权限列的第一个字符是 s
)。bash
$ ls -l /run/mysqld/mysqld.sock
srwxrwxrwx 1 mysql mysql 0 May 10 10:00 /run/mysqld/mysqld.sock
通信方式
常见用途
/var/run/mysqld/mysqld.sock
提供本地连接)。/tmp/.X11-unix/X0
)。/var/run/docker.sock
)。服务端进程
/tmp/myapp.sock
)并监听它。python
import socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.bind("/tmp/myapp.sock")
sock.listen(1)
客户端进程
python
client_sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
client_sock.connect("/tmp/myapp.sock")
特性 | 套接字文件(UNIX Domain Socket) | 网络套接字(TCP/IP) |
---|---|---|
通信范围 | 同一主机 | 跨主机 |
性能 | 更高(无需网络协议栈) | 较低 |
地址形式 | 文件系统路径(如 /tmp/foo.sock ) |
IP地址+端口(如 127.0.0.1:8080 ) |
安全性 | 依赖文件系统权限 | 依赖网络防火墙 |
查看套接字文件
find / -type s # 查找所有套接字文件
ss -xlp # 查看正在使用的UNIX域套接字
删除套接字文件
rm /path/to/socket.sock
权限错误
chmod
或 chown
调整)。文件未释放
路径长度限制
套接字文件是Linux中高效的进程间通信机制,尤其适合需要频繁通信的本地服务。它的性能优于网络套接字,但仅限于单机环境。理解其原理和用法对系统管理和开发调试非常有帮助。