找到文件删除的原因

时间:2017-08-31 08:11:46

标签: linux

当我在终端中运行一个脚本,该脚本通过运行其他脚本来编译不同的东西时,它会显示错误,告诉我文件XXX不存在。但它在我运行脚本之前就存在了。因此,我想找出哪个脚本/程序/进程删除了文件来修复bug。

我看了this,但它没有帮助我:我正在寻找删除来源的程序,而不是用户。另外,auditctl和iwatch不存在于我正在使用的机器上。

请注意,我对what files are deleted不感兴趣(我完全知道哪个)。

此外,我可以重新创建XXX以再次运行脚本。

如何简单找出导致删除XXX的原因?

1 个答案:

答案 0 :(得分:1)

考虑如何调试shell脚本有两种可能性:

  1. 使用strace;您正在寻找的函数调用很可能是unlink()。从周围的调用中,您应该能够从中调用删除的上下文。
  2. 使用set -x或shebang #!/bin/bash -x(针对Bash)和grep rm以及unlink启用命令回显。然而,删除可能发生在一些被称为某处的二进制文件中,在这种情况下,你不会以这种方式找到任何东西。
  3. 将输出重定向到文件以便于搜索。