【问题标题】:mysqldump - redirect greped STDERR to a filemysqldump - 将 greped STDERR 重定向到文件
【发布时间】:2021-03-08 12:52:33
【问题描述】:

mysqldump 生成 STDOUT(用于转储 *.sql),还生成 STDERR - 我需要过滤 + 写入文件。

mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 2>> '/srv/www/data_appsrv/logs/mysql_date_ym.log' > '/mnt/backup_srv/backup/daily/file_nm.sql'

上面的代码会将STDERR写入mysql_date_ym.log

我需要从写入mysql_date_ym.log的STDERR中排除Warning: Using a password字符串

我尝试了 grep2>>> 的变体,但没有一个有效。

【问题讨论】:

  • 如果警告信息是标准错误的一部分,输出将显示在屏幕上,而不是进入日志文件
  • 只需使用grep -v 排除模式即可。

标签: bash grep stdout stderr


【解决方案1】:

这应该可以工作

command 1>stdout.txt 2> >(grep -v "Thing to remove from stderr" >stderr.txt)

这会将 STDOUT 重定向到 stdout.txt,并通过进程替换将 STDERR 重定向到 grep 过滤器,然后最终重定向到 stderr.txt。

所以你的完整命令看起来像这样

mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 1>'/mnt/backup_srv/backup/daily/file_nm.sql' 2> >(grep -v "Warning: Using a password" > '/srv/www/data_appsrv/logs/mysql_date_ym.log')

在将 STDOUT/STDERR 正常重定向到输出文件后,您还可以使用 sed 脚本在 mysql_date_ym.log 文件上运行。

sed -i 's/Warning: Using a password//g' mysql_date_ym.log

【讨论】:

  • 抱怨2> >:意外标记`>'附近的语法错误
  • 它应该可以工作,但你的命令是mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 1>'/mnt/backup_srv/backup/daily/file_nm.sql' 2> >(grep -v "Warning: Using a password" > '/srv/www/data_appsrv/logs/mysql_date_ym.log') 你使用的是什么版本的bash?使用echo "$BASH_VERSION" 查找
  • 看起来它正在工作! 1> 是要写入 STDOUT 吗?
  • 我疑惑的问,你在回答中提到:STDIN..所以基本上你的意思是STDOUT,对吧?
  • 当你使用管道时,你会丢失原始的 STDERR 文件描述符并使用 gzip 命令打开一个新的文件描述符(除非你使用 |&,但这会合并 STDOUT 和 STDERR,所以你不会以后可以拆分它们)。相反,您应该做的是与最初处理 STDERR fd 相同的方式:mysqldump --user=db_username --password=db_password --add-drop-database --host=db_host db_name 1> >(gzip >'/mnt/backup_srv/backup/daily/file_nm.sql') 2> >(grep -v "Warning: Using a password" >'/srv/www/data_appsrv/logs/mysql_date_ym.log') 虽然可能有更好的方法来做到这一点,但这会奏效。
猜你喜欢
  • 2014-07-22
  • 1970-01-01
  • 2014-09-30
  • 1970-01-01
  • 2021-06-29
  • 2011-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多