因此,我通常使用两个参数来启动 mongod 进程,如下所示
~$ mongod --dbpath /media/0CB6-189A/linux/mongodb/data --logpath /media/0CB6-189A/linux/mongodb
。
但我不想每次都指定参数,所以我将它们保存到一个名为mongo.txt
以下内容的文本文件中。
--dbpath /media/0CB6-189A/linux/mongodb/data --logpath /media/0CB6-189A/linux/mongodb
然后我cat
把该文件并通过管道传输,mongod
像这样
~$ cat mongod.txt | mongod
但它不起作用,仍然使用参数的mongod
默认值,另一个参数也是如此。有人知道我该如何实现这一点吗?/data/db
--dbpath
答案1
Ubuntu 和所有安装了 GNU 实用程序的 Linux 发行版都具有xargs
,它允许使用从另一个命令传输的参数或从 stdin 提供的参数来运行命令。对于您的情况,您需要执行以下操作:
xargs mongod < mongo_args.txt
这里有mongo_args.txt
包含参数的文本文件,它被重定向到stdin
。xargs
它将与一起连接mongod
并作为完整命令运行。
答案2
您走的路是对的,但您正试图通过管道传输 的输出cat mongod.txt
。管道传输并不意味着输出将作为参数添加。相反,当您通过管道传输数据时,接收程序必须知道如何处理通过管道传输的数据。
例如,如果我们有banana.txt
文本测试:
cat banana.txt | echo
- 输出为空行
echo "$(cat banana.txt)"
- 测试作为输出
我们不是要求通过管道bash
来评估cat banana.txt
,而是要求在执行之前立即将其插入那里echo
。
虽然有成千上万的实际示例,但您需要使用管道的一些示例是使用grep
和sed
和等工具dd
。查看“bash 管道”、“bash 评估/扩展”等内容标准输入。