linux bash 脚本日志输出

linux bash script log output

我无法将输出输出到脚本中的日志文件中。备份 运行s 成功,但日志文件为空。当我 运行 脚本时,我得到 "Warning: Using a password on the command line interface can be insecure." 所以至少应该在日志文件中。 (我使用的是 .key 文件)

mysqldump  -u root -p$Pass   --all-databases | gzip > fulldbdmp-$(date +%m%d%Y).dump.gz 2> file.log

那是因为,只有执行 gzip 时出现的错误才会进入文件。要得到你想要的,使用 -

mysqldump -u root -p$Pass --all-databases 2>file.log | gzip > fulldbdmp-$(date +%m%d%Y).dump.gz

我同意 的回答,但似乎需要添加另一个参数 (-v) 来启用详细输出,例如 mysqldump -v -u root -p$Pass --all-databases 2>file.log | gzip > fulldbdmp-$(date +%m%d%Y).dump.gz.

您可以在终端上看到错误消息,这意味着它不会进入日志文件。

正如其他人所提到的,您正在从管道的 gzip 元素而不是 mysqldump 元素重定向 stderr。

如果您将管道视为一系列元素,可能会清楚发生了什么:

  • mysqldump -u root -p$Pass --all-databases
  • gzip > fulldbdmp-$(date +%m%d%Y).dump.gz 2> file.log

你可能在寻找这个:

  • mysqldump -u root -p$Pass --all-databases 2> file.log
  • gzip > fulldbdmp-$(date +%m%d%Y).dump.gz

变成:

mysqldump -u root -p$Pass --all-databases 2> file.log \ |
  gzip > fulldbdmp-$(date +%m%d%Y).dump.gz

旁注:我强烈建议您不要忽略以下警告。这是有原因的。见 6.1.2.1 End-User Guidelines for Password Security

Warning: Using a password on the command line interface can be insecure