Так обычно я запускаю процесс mongod с 2 аргументов как это
~$ mongod --dbpath /media/nhuyvan1106/0CB6-189A/linux/mongodb/data --logpath /media/nhuyvan1106/0CB6-189A/linux/mongodb
.
Но я не хочу указывать аргументы каждый раз, таким образом, я сохранил их к названному текстовому файлу mongo.txt
с этим после содержания.
--dbpath /media/nhuyvan1106/0CB6-189A/linux/mongodb/data --logpath /media/nhuyvan1106/0CB6-189A/linux/mongodb
Затем я cat
тот файл и канал это через mongod
как это
~$ cat mongod.txt | mongod
Но это не работает, mongod
все еще использует значение по умолчанию /data/db
для аргумента --dbpath
и то же для другого аргумента. Кто-либо знает, как я могу достигнуть этого?
Вы находитесь на правильном пути, но Вы пытаетесь передать вывод по каналу cat mongod.txt
. Передача по каналу не означает, что вывод будет добавлен как аргументы. Вместо этого при передаче по каналу данных программа получения должна знать, как иметь дело с pipe'd данными.
Например, если мы имеем banana.txt
с текстовым Тестом:
cat banana.txt | echo
echo "$(cat banana.txt)"
Вместо передачи по каналу спрашиваем мы bash
оценить cat banana.txt
, и вставьте это там сразу, и перед выполнением echo
.
В то время как существуют тысячи фактических примеров, несколько примеров того, где Вы хотели бы передать по каналу, будет с инструментами как grep
и sed
, и dd
. Изучите 'передачу по каналу удара', 'колотят оценка/расширение' и материал как STDIN.
Ubuntu и все дистрибутивы Linux с установленными утилитами GNU, имеют xargs
, который позволяет выполнять команду с аргументами, переданными по каналу от другой команды или от обеспеченного от stdin. В Вашем случае, что Вы хотели бы сделать, следующее:
xargs mongod < mongo_args.txt
Здесь Вы имеете mongo_args.txt
, который является текстовым файлом с Вашими аргументами, и он перенаправляется как stdin
к xargs
. Это будет объединено с mongod
и работало как полная команда.