在 Bash 脚本中重置调试/详细模式日志记录

在 Bash 脚本中重置调试/详细模式日志记录

我以 root 身份使用 cronjob 通过 lsof 检查某些远程机器是否已建立到主服务器的 ssh 隧道(root,否则 lsof 和 netstat 将不会显示用户名和 sshd pid)。

然后对于每个连接,我想运行部署脚本,在这些连接上执行一系列任务:

for script in "${deploy_scripts[@]}"
do
    set +e
    sudo -u $deploy_user -H ${script} $user $port $conpid 2>&1 > /tmp/deploy.log
    res=$?
    set -e
    if [ $res -ne 0 ]; then
        echo error executing in $script
        cat /tmp/deploy.log
    fi
done

每个部署脚本基本上看起来像

#!/bin/bash
set -x
set -e
user=$1
port=$2
pid=$3
do stuff

但是 deploy.log 总是空的,我想知道什么时候会失败。我尝试过执行BASH_XTRACEFD,但我不知道如何在每次部署脚本后重置它,以便它不会捕获根脚本。部署脚本应该不知道这个日志记录。

相关内容