You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统find命令无法检索到已存在的docker.sock文件问题咨询

问题原因

  1. /var/run是符号链接,find默认不跟随软链接遍历
    Ubuntu 20.04默认将/var/run设置为指向/run的软链接,执行ls -ld /var/run可验证,输出类似:
lrwxrwxrwx 1 root root 4  Oct 18 20:00 /var/run -> /run

GNU find的默认行为是-P选项生效,遍历过程中遇到符号链接时,仅把链接本身作为文件处理,不会进入链接指向的目标目录扫描内容。你执行find /var/run时,find仅检查了/var/run这个软链接本身的文件名是否匹配docker.sock,自然不会返回/run目录下的匹配结果。
你直接执行ls /var/run/docker.sock时,shell会自动解析/var/run这个软链接指向的/run路径,所以能正常显示目标文件的属性,和find的默认遍历逻辑完全不同。
2. 同名目录干扰匹配
从你给出的ls输出可以看到/var/run/march/docker.sock是目录,而/run/docker.sock是实际的docker套接字文件,find默认不加类型过滤的情况下会匹配所有类型的文件,你搜索/run时返回的两个结果里,/run/march/docker.sock是目录,/run/docker.sock才是真正的docker服务套接字。

解决方法

  • 方法1:给find添加-L参数,强制跟随符号链接遍历
    -L参数会让find在遍历过程中跟随所有遇到的符号链接进入目标目录扫描,命令如下:
sudo find -L /var/run -name docker.sock
sudo find -L /var -name docker.sock

注意:使用-L参数时要注意避免符号链接循环导致的无限遍历。

  • 方法2:直接搜索实际目录/run
    既然docker相关的运行时文件都存放在/run目录下,直接搜索/run路径即可,这也是最推荐的方式,避免不必要的软链接跟随操作。
  • 方法3:添加类型过滤,只匹配套接字文件
    如果你要排除同名目录的干扰,只找docker的套接字文件,可以添加-type s参数:
# 直接搜索实际路径
sudo find /run -type s -name docker.sock
# 跟随软链接搜索/var/run
sudo find -L /var/run -type s -name docker.sock

内容的提问来源于stack exchange,提问作者Gavin Hunter21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 10:18:00