如何删除类似.nfs000xxxx的文件
IC 设计一般来说都是在 Linux 服务器上完成的,频繁的启动、结束 EDA 工具,生成、删除临时数据,难免会出现类似 .nfs000xxx 的文件。当尝试使用 rm 去删除它时,会有下面的提示:
代码语言:javascript复制>rm -f .nfs000000001fce9bc00000xxxx
rm: cannot remove `.nfs000000001fce9bc00000xxxx: Device or resource busy
这种文件通常都是因为执行命令的进程服务器和保存数据文件的网络文件服务器之间的通信没有及时同步,在进程尚未成功结束的情况下,该进程操作的网络文件却被意外“删除”的情况下产生的,此时操作系统会自动产生一个类似 .nfs000xxx 的文件保存即将被删除文件的内容。
所以需要先找到操作该文件的进程,可以通过
代码语言:javascript复制lsof .nfs000000001fce9bc00000xxx
得到
代码语言:javascript复制COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
vim 7907 icsoc 3u REG 0,29 12288 533633984 .nfs000000001fce9bc00000xxxx
或者通过
代码语言:javascript复制fuser -v .nfs000000001fce9bc00000xxxx
得到
代码语言:javascript复制USER PID ACCESS COMMAND
icsoc 7907 F.... vim
然后根据 PID 结束找到的进程
代码语言:javascript复制kill -9 7907
对应的 .nfs000000001fce9bc00000xxxx 就会消失了。
如何批量结束计算集群中的任务
目前许多 IC 公司的计算集群都是 LSF 管理的。如何结束批量运行的 EDA 任务?例如运行 PT DMSA 时,会同时提交大量的进程,当运行有错误想中止任务时,在 Terminal 按 ctrl-c 会立即中断 PT DMSA 的 Master 进程,但大量的 Slave 进程可能并不会立即结束。
通过 bjobs -l
命令观察这些 Slave 进程,可以发现 PT Master 在提交它们时,指定了有规律的 Job Name。从下例可以看出由三部分组成,第一部分是 Master 进程所在服务器的 HostName 和 PID,第二部分看起来是个自动生成的唯一辨识符,第三部分是 Slave 的序列号,所有 Slave 进程的 Job Name 只有第三部分是不同的。
Job Name <MetaServer-p223414.jbfd1b457110e2c5b.0001>
根据这个规律,就可以用通配符把所有的 Slave 进程都找出来,一起结束掉。
代码语言:javascript复制bkill -J "MetaServer-p223414.jbfd1b457110e2c5b.*"
如果别的 EDA 工具不像 PT 这么友好帮助我们统一命名 Job Name,我们也可以使用下列的选项指定有规律的 Job Name。
代码语言:javascript复制bsub -J "Meta Job Name"
从而在提交之后可以方便的把这些进程给找出来。
代码语言:javascript复制bjobs -J "Meta Job Name"