我在运行 CentOS 7 的 SGE 集群上做了很多工作,最近遇到了作业随机死亡的问题,但似乎有些进程仍在运行,阻止我清理以重新开始。当我尝试删除必要的文件时,我收到"没有这样的文件或目录"消息,但该文件显示在ls中。 论坛搜索告诉我这可能是因为名称中没有打印字符,但我无法使用触摸创建同名文件,或使用 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来删除该文件。
查找/路径/到/文件 -类型 f -name 'file_bad.csv' -exec rm -f {} \;