bash 列出但无法访问的文件

bash 列出但无法访问的文件

什么会导致 Ubuntu 12.04 系统出现以下行为?

  1. 我已经以“ubuntu”用户身份通过​​ SSH 进入了一台机器。
  2. 运行ls -lah /data/*显示数十个非空文件(例如 file1.txt、file2.txt 等),全部归“ubuntu”用户/组所有,并具有完全读/写访问权限。
  3. 如果我尝试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

如果不是很重要的话,请尝试重新启动/终止该应用程序,或者尝试重新启动系统。

相关内容