将错误日志添加到脚本

将错误日志添加到脚本

我有以下 Big Sur Mac OS 脚本:

#!/bin/zsh

/usr/local/bin/aws s3 cp /Library/FileMaker\ Server/Data/Backups/S3/noon_db_* s3://testbackupnoon

rm -rf /Library/FileMaker\ Server/Data/Backups/S3/*

为了在当前用户文件夹中创建日志文件并显示任何错误或成功,我应该使用什么代码语法以及将其插入上述脚本的什么位置?

谢谢

答案1

您可以使用该exec命令重定向脚本其余部分的输出,就像在单个命令上一样。因此,exec >>~/testbackupnoon.log 2>&1在脚本开头添加类似以下内容会将所有输出(stdout 和 stderr)附加到当前用户主目录中的 testbackupnoon.log。如果您希望将输出发送到文件终端,改用类似的exec > >(tee -a t.log) 2>&1

假设您要将内容附加到文件(如我上面所建议的),最好添加一些常规信息,例如操作开始和完成时的时间戳,以及运行之间的空白行。我还会在脚本主体中添加一些错误检查,例如,如果复制到 S3 失败,它不会继续删除本地备份。因此,如下所示(警告:这尚未经过适当测试):

#!/bin/zsh

# start logging
exec > >(tee -a t.log) 2>&1
date -u +"%n%Y-%m-%dT%H:%M:%SZ backup to S3 started" >&2

/usr/local/bin/aws s3 cp /Library/FileMaker\ Server/Data/Backups/S3/noon_db_* s3://testbackupnoon || {
    echo "Copy to S4 failed; local backups will be left" >&2
    exit 1
}

rm -rf /Library/FileMaker\ Server/Data/Backups/S3/*

date -u +"%Y-%m-%dT%H:%M:%SZ backup to S3 completed" >&2

相关内容