我知道这已被多次询问,但我可以在我的案例中找到合适的答案。
我使用 rsync 编写了备份脚本,并希望从所有脚本命令中查看所有输出,错误与否。我必须在脚本本身内部编写命令,并且不希望在shell中看到输出。 我一直在努力,没有成功。下面是剧本的一部分。
#!/bin/bash
.....
BKLOG=/mnt/backup_error_$now.txt
# Log everything to log file
# something like
exec 2>&1 | tee $BKLOG
# OR
exec &> $BKLOG
我一直在脚本中添加各种exec | tee $BKLOG
并在命令行的各个部分添加&>, 2>&1
,但都失败了。我得到一个空的日志文件或不完整。我需要在日志文件中看到 rsync 已完成的操作,以及脚本在同步之前失败时的错误。
谢谢你的帮助。我的shell是zsh,所以欢迎zsh中的任何解决方案。
答案 0 :(得分:2)
要将所有stdout / stderr重定向到文件,请将此行放在脚本之上:
BKLOG=/mnt/backup_error_$now.txt
exec &> "$BKLOG"