将mongo直接输出到文件

时间:2016-09-14 20:06:38

标签: bash mongodb stdout

我有一个脚本可以自动为我们的服务器重建mongo db:

#!/bin/sh

mongo local:host 127.0.0.1 mongodb-create-ourdatabase.js > validate.txt

mongoimport --host 127.0.0.1 --db ourdatabase --collection ourUser --file create-ourUser.js > validate.txt

创建数据库时第一行的输出写入文件,但创建集合ourUser的第二行的输出将输出到屏幕。

我错过了什么?

2 个答案:

答案 0 :(得分:0)

首先,两个调用都会创建一个空的新validate.txt文件。所以第二个叫做clobbers首先调用结果。我怀疑这是你想要的,所以你应该将第>>>改为追加到你的日志文件。

其次,可执行文件通过2个屏幕通道发出输出:标准输出(又名stdout,用于正常输出,结果)和标准错误(aka { {1}},用于警告和错误)。通过查看输出,无法知道哪个流是目标。

要合并两个流并获取所有流程输出,您必须使用stderrstderr导管到stdout以便能够重定向(dup& close pipe 2 = stderr to 1 =标准输出)

2&>1

答案 1 :(得分:0)

感谢Jean-Francois的回应,不幸的是没有成功,但它很接近。有用的是:

#!/bin/sh

mongo localhost:27017 mongodb-create-our-database.js 2>&1 > validate.txt

mongoimport --host 127.0.0.1 --db ourdatabase --collection ourUser --file create-ourUser.js >> validate.txt 2>&1

使用2&> 1让脚本查找文件2,我发现了这个很好的解释:

Scroll down to 1st answer

对我有用。