Как передать по каналу текстовый файл, содержащий mongod аргументы команде mongod

Так обычно я запускаю процесс 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 и то же для другого аргумента. Кто-либо знает, как я могу достигнуть этого?

0
задан 27 January 2017 в 15:39

2 ответа

Вы находитесь на правильном пути, но Вы пытаетесь передать вывод по каналу cat mongod.txt. Передача по каналу не означает, что вывод будет добавлен как аргументы. Вместо этого при передаче по каналу данных программа получения должна знать, как иметь дело с pipe'd данными.

Например, если мы имеем banana.txt с текстовым Тестом:

  1. cat banana.txt | echo
    • Пустая строка, как произведено
  2. echo "$(cat banana.txt)"
    • Тест, как произведено

Вместо передачи по каналу спрашиваем мы bash оценить cat banana.txt, и вставьте это там сразу, и перед выполнением echo.

В то время как существуют тысячи фактических примеров, несколько примеров того, где Вы хотели бы передать по каналу, будет с инструментами как grep и sed, и dd. Изучите 'передачу по каналу удара', 'колотят оценка/расширение' и материал как STDIN.

1
ответ дан 7 November 2019 в 02:24

Ubuntu и все дистрибутивы Linux с установленными утилитами GNU, имеют xargs, который позволяет выполнять команду с аргументами, переданными по каналу от другой команды или от обеспеченного от stdin. В Вашем случае, что Вы хотели бы сделать, следующее:

xargs  mongod < mongo_args.txt

Здесь Вы имеете mongo_args.txt, который является текстовым файлом с Вашими аргументами, и он перенаправляется как stdin к xargs. Это будет объединено с mongod и работало как полная команда.

2
ответ дан 7 November 2019 в 02:24

Другие вопросы по тегам:

Похожие вопросы: