从另一个脚本中将所有脚本输出打印到文件

时间:2017-02-03 00:20:40

标签: bash shell output sh centos7

英语不是我的母语,请接受我对任何语言问题的道歉。

我想通过CRON执行脚本(bash / sh),它将执行各种维护操作,包括备份。该脚本将执行其他脚本,每个脚本对应一个函数。而且我希望将打印的全部内容保存在每个执行脚本的单独文件中。

问题是这些其他脚本中的每一个都执行诸如" duplicity"," certbot"," maldet"等命令。 " ECHO"每个脚本中的命令都打印在文件中,但是" duplicity"," certbot"的输出。和" maldet"命令不! 我想避免放入" | tee --append"或每行上的另一个命令。但即使在每一行都这样做,"下标"不要保存在日志文件中。也就是说,理想情况下,在父脚本中,您可以指定每个脚本在哪个文件中打印。

不起作用:

  1. sudo bash /duplicityscript > /path/log

    sudo bash /duplicityscript >> /path/log

    1. sudo bash /duplicityscript | sudo tee –append /path/log > /dev/null

      sudo bash /duplicityscript | sudo tee –append /path/log

      1. 使用exec(like this):

        exec > >(tee -i /path/log) 
        sudo bash /duplicityscript 
        exec > >(tee -i /dev/null)`
        
      2. 实施例

        ./ maincron

            sudo ./duplicityscript > /myduplicity.log
            sudo ./maldetscript > /mymaldet.log
            sudo ./certbotscript > /mycertbot.log
        

        ./ duplicityscript

            echo "Exporting Mysql/MariaDB..."
            {dump command}
        
            echo "Exporting postgres..."
            {dump command}
        
            echo "Start duplicity data backup to server 1..."
            {duplicity command}
        
            echo "Start duplicity data backup to server 2..."
            {duplicity command}
        

        在日志文件中,将打印:

            Exporting Mysql/MariaDB...
            Exporting postgres...
            Start duplicity data backup to server 1...
            Start duplicity data backup to server 2...
        

        在上面的示例中," ECHO"每个脚本中的命令都将保存在日志文件中,但duplicity和dump命令的输出将打印在屏幕上,而不是打印在日志文件中。

        我做了一个googlada,我甚至看到this topic,但我无法适应我的必需品。

        没有问题,输出也会打印在屏幕上,只要它完整,打印在文件上。

1 个答案:

答案 0 :(得分:0)

在行尾尝试2>& 1,它应该有所帮助。或者以sh -x模式运行脚本以查看导致问题的原因。

希望这有帮助