![bash 列出但无法访问的文件](https://linux22.com/image/1419801/bash%20%E5%88%97%E5%87%BA%E4%BD%86%E6%97%A0%E6%B3%95%E8%AE%BF%E9%97%AE%E7%9A%84%E6%96%87%E4%BB%B6.png)
什么会导致 Ubuntu 12.04 系统出现以下行为?
- 我已经以“ubuntu”用户身份通过 SSH 进入了一台机器。
- 运行
ls -lah /data/*
显示数十个非空文件(例如 file1.txt、file2.txt 等),全部归“ubuntu”用户/组所有,并具有完全读/写访问权限。 - 如果我尝试
cat /data/file1.txt
,bash 会给我错误“cat:/data/file1.txt:没有此文件或目录”
简而言之,ls
它列出了文件,但在其他任何方面,这些文件实际上都不存在。我无法以任何方式 cat 它们或读取它们。即使授予所有文件 777 权限也没有任何改变。这真是太奇怪了。这是怎么回事?
答案1
它们的文件名中可能有二进制字符。
对于cat /data/file1.txt
,尝试匹配名称的一部分,然后让 shell 找出其余部分:
cat /data/*1.txt
答案2
这些文件可能已被删除,但仍在应用程序中打开。这些文件不存在于磁盘上,但由于应用程序仍将它们“打开”,因此内核暂时无法将它们从文件系统中删除。
使用以下文件查找进程
sudo lsof | grep data/file1.txt
如果不是很重要的话,请尝试重新启动/终止该应用程序,或者尝试重新启动系统。