Linux 文件显示在ls中,但不能显示rm或mv,似乎被某个未知进程持有

Linux 文件显示在ls中,但不能显示rm或mv,似乎被某个未知进程持有,linux,Linux,我在运行CentOS 7的SGE集群上做了很多工作,最近出现了作业随机死亡的问题,但似乎有些进程仍在运行,阻止我重新清理。当我试图删除必要的文件时,我会收到一条“没有这样的文件或目录”消息,但该文件显示在ls中。论坛搜索告诉我,这可能是因为名称中没有打印字符,但我无法使用touch创建同名文件,也无法使用rm-I将其删除。例如: [ark19@blade04 testing]$ rm file_bad.csv rm: cannot remove ‘file_bad.csv’: No such

我在运行CentOS 7的SGE集群上做了很多工作,最近出现了作业随机死亡的问题,但似乎有些进程仍在运行,阻止我重新清理。当我试图删除必要的文件时,我会收到一条“没有这样的文件或目录”消息,但该文件显示在ls中。论坛搜索告诉我,这可能是因为名称中没有打印字符,但我无法使用touch创建同名文件,也无法使用rm-I将其删除。例如:

[ark19@blade04 testing]$ rm file_bad.csv 
rm: cannot remove ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ rm -f file_bad.csv 
[ark19@blade04 testing]$ ls file*
file1.csv  file2.csv  file_bad.csv
[ark19@blade04 testing]$ touch file_bad.csv 
touch: cannot touch ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ rm -i -- file_bad.csv 
rm: cannot remove ‘file_bad.csv’: No such file or directory
[ark19@blade04 testing]$ ls file*
file1.csv  file2.csv  file_bad.csv
因此,我相当确定问题在于,坏文件被某个进程持有,当我向集群管理员提出时,他们提出的唯一解决方案是给他们文件名,以便他们可以删除它。这种情况发生得太频繁了,不可能是一个可持续的解决方案,所以我想在这里问一下,我是否可以自己做些什么来解决这个问题,比如以某种方式强制删除该文件并关闭所有挡道的进程

大多数情况下,我不知道可疑进程运行在哪个群集节点上,也不知道如何检查所有群集节点以找到并终止相应的进程……如果我从登录的节点运行lsof命令,它将不会显示任何结果

非常感谢您的建议,谢谢

试试看:

lsof/absolute/path/to/file_bad.csv

如果上面的命令产生任何输出,您将发现PID负责保持该文件的使用

您也可以尝试使用下面的cmd来删除该文件

find/path/to/file-type f-name'file_bad.csv'-exec rm-f{}


名字中很可能有不可见的坏字符。ls-b,-Q,--quoting style=shell或--quoting style=shell总是感谢您的回复@bmargiles,但我认为不是这样的:ls-Q输出与ls相同,只是带有引号(没有空格)。另外,“touch file_bad.csv”返回一个错误,如果file_bad.csv不是完整的名称,则不应返回该错误,对吗?执行
ls-i
以查看每个文件的索引节点号。然后使用
find-inum NUMBER-打印
以确认,然后使用查找删除文件-inum编号-删除或查找-inum NUMBER-exec rm-f{}-如果-delete选项不可用,则打印。如果仍然不起作用,请在文件上使用
fuser
,查看哪个进程有它。最坏的情况是,重新启动系统。谢谢@Nic3500的建议。令人沮丧的是,我使用
find得到了相同的行为-inum NUMBER
:使用
-delete
时,它会显示“没有这样的文件或目录”,但会显示为
-print
。类似地,
fuser
表示该文件不存在。另外,我应该在我的帖子中强调,系统是一个远程集群,我不是管理员,所以重启不是一个选项。堆栈溢出是一个编程和开发问题的网站。这个问题似乎离题了,因为它与编程或开发无关。请参见帮助中心中的。也许或者会是一个更好的提问的地方。有了这个,我得到了/absolute/path/to/file\u bad.csv上的
lsof:status error:没有这样的文件或目录
find
命令没有出错,但文件仍然存在。我开始认为文件名是由您在终端中看不到的特殊字符组成的。请尝试:“find/path/to/file-type f-name'ile'”并让我知道它找到了什么编辑:-name“ile”。我似乎无法在评论中输入*