我能找到哪个脚本输出了哪个错误吗?

我能找到哪个脚本输出了哪个错误吗?

有一个脚本调用其他脚本,而这些脚本又调用其他脚本……我不知道具体调用了哪些脚本以及有多少个脚本。我只知道其中一些脚本正在添加 iptables 规则,当我调用 root 脚本时会出现此错误。

iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.

我的问题是,我找不到哪个脚本输出了此错误。有什么方法或工具可以了解这一点吗?

答案1

您可以使用以下方式跟踪一系列脚本的执行bash -x

bash -x /path/to/your/script

从这里你可以找出正在调用哪些脚本。你可以使用-e开关 强制脚本提前中止

bash -e -x /path/to/your/script

这可能会让你免去阅读大量输出的麻烦

答案2

您可以简单地将执行脚本的 stdout 和 sterr 重定向到一个文件。每个脚本输出都可以定向到一个单独的文件。在这种情况下,您可以查看这些文件并检查哪个脚本返回了错误。

要重定向输出,您可以使用:

/path/to/script > /path/to/logfile.log

要重定向 stdout 和 stderr,您可以使用:

/path/to/script > /path/to/logfile.log 2>&1

您可以替换>为,>>以将其附加到文件,而不是每次都截断它。

相关内容