我想定期观察一个套接字状态,所以我需要通过命令检查套接字状态。
目前我列出了所有侦听套接字ss并通过grep.
ss -l | grep -q /run/php/php7.0-fpm.sock
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来检查套接字的状态?
在断开连接之前,您可以通过尝试连接、不传递任何内容和不接受任何内容来获取一些信息。
socat -u OPEN:/dev/null UNIX-CONNECT:/run/php/php7.0-fpm.sock
Run Code Online (Sandbox Code Playgroud)
至少有四种可能的结果:
如果套接字不存在,则错误为No such file or directory,退出状态为1。
如果您没有对套接字的写访问权限,则错误将为Permission denied,退出状态将为1。在这种情况下,您无法判断是否有进程在监听。
如果您对套接字具有写访问权限并且没有侦听进程,那么错误将是Connection refused,退出状态将是1.
如果您对套接字具有写访问权限并且有进程在侦听,则将建立连接。该命令不会发送任何内容(例如cat /dev/null),它不会尝试接收任何内容(因为-u),因此它几乎会立即退出。退出状态将为0。
连接建立,虽然短暂但仍然如此。监听进程可以配置为只接受一个连接,服务它并退出;或一次接受一个连接。在这种情况下,探测连接将达到极限;这是不可取的。然而,在实践中,我希望绝大多数侦听进程能够为多个连接提供服务,并优雅地处理无情断开连接的客户端。
笔记:
1。| 归档时间: |
|
| 查看次数: |
6685 次 |
| 最近记录: |