【发布时间】:2014-12-09 09:21:21
【问题描述】:
我目前正在尝试编写一个脚本来备份我的几个网站及其数据库。
一切运行良好,但我正试图让我的日志更聪明一点 - 基本上,目前它会尝试运行 mysqldump 并回显成功或失败。
我宁愿输出实际错误,而不仅仅是一个无用的“mysqldump failed”消息。我环顾四周,我几乎可以使用“2> log_file.txt”
我原来的命令:
mysqldump -u asdsa --password=$DB_PASS $DB_NAME > $MYSQL_LOCATION
if [ "$?" -eq 0 ]
then
echo -e "mysqldump successfully finished at $(date +'%d-%m-%Y %H:%M:%S')"$'\r' >> "$LOG_LOCATION"
else
echo -e "mysqldump failed at $(date +'%d-%m-%Y %H:%M:%S')"$'\r' >> "$LOG_LOCATION"
fi
所以我添加了“2> $LOG_LOCATION |”捕捉实际错误。所以我更新的命令看起来像这样(这个添加在第一行):
mysqldump -u $DB_USER--password=$DB_PASS $DB_NAME 2> $LOG_LOCATION | > $MYSQL_LOCATION
if [ "$?" -eq 0 ]
then
echo -e "mysqldump successfully finished at $(date +'%d-%m-%Y %H:%M:%S')"$'\r' >> "$LOG_LOCATION"
else
echo -e "mysqldump failed at $(date +'%d-%m-%Y %H:%M:%S')"$'\r' >> "$LOG_LOCATION"
fi
这会将错误输出到我的日志文件,但会覆盖其中的任何内容。这也意味着我的错误检查 if 语句没有发现错误。
有什么办法可以:
a) 从 mysqldump 函数中捕获实际错误(即,该用户的访问被拒绝) b) 将此错误附加到现有错误日志 c) 在上述错误输出后还附加一条成功或失败消息
任何帮助都会很棒!
谢谢!
【问题讨论】:
-
你也可以附加重定向:
2>> $LOG_LOCATION,所以在你的 mysqldump 命令中使用它来不覆盖日志文件。
标签: bash shell error-handling mysqldump