有一个脚本调用其他脚本,而这些脚本又调用其他脚本……我不知道具体调用了哪些脚本以及有多少个脚本。我只知道其中一些脚本正在添加 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
您可以替换>
为,>>
以将其附加到文件,而不是每次都截断它。