我有一个脚本可以自动为我们的服务器重建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的第二行的输出将输出到屏幕。
我错过了什么?
答案 0 :(得分:0)
首先,两个调用都会创建一个空的新validate.txt
文件。所以第二个叫做clobbers首先调用结果。我怀疑这是你想要的,所以你应该将第>
个>>
改为追加到你的日志文件。
其次,可执行文件通过2个屏幕通道发出输出:标准输出(又名stdout
,用于正常输出,结果)和标准错误(aka { {1}},用于警告和错误)。通过查看输出,无法知道哪个流是目标。
要合并两个流并获取所有流程输出,您必须使用stderr
将stderr
导管到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,我发现了这个很好的解释:
对我有用。