Como canalizar um arquivo de texto contendo argumentos mongod para o comando mongod

0

Normalmente, inicio um processo mongod com 2 argumentos como este

~$ mongod --dbpath /media/nhuyvan1106/0CB6-189A/linux/mongodb/data --logpath /media/nhuyvan1106/0CB6-189A/linux/mongodb .

Mas eu não quero especificar os argumentos toda vez, então eu os salvei em um arquivo de texto chamado mongo.txt com este conteúdo a seguir.

--dbpath /media/nhuyvan1106/0CB6-189A/linux/mongodb/data --logpath /media/nhuyvan1106/0CB6-189A/linux/mongodb

Então, eu cat desse arquivo e canalizo-o através de mongod como este

~$ cat mongod.txt | mongod

Mas isso não funciona, mongod ainda usa o valor padrão /data/db para o argumento --dbpath e o mesmo para o outro argumento. Alguém sabe como posso conseguir isso?

    
por Dummy 27.01.2017 / 23:39

2 respostas

1

Você está no caminho certo, mas está tentando canalizar a saída de cat mongod.txt . Piping não significa que a saída será adicionada como argumentos. Em vez disso, quando você canaliza dados, o programa de recebimento precisa saber como lidar com os dados do pipe.

Por exemplo, se tivermos banana.txt com o texto Teste :

  1. %código%
    • Linha vazia como saída
  2. %código%
    • Teste como saída

Em vez de canalizar, estamos pedindo a cat banana.txt | echo para avaliar echo "$(cat banana.txt)" e inserir isso imediatamente, e antes de executar bash .

Embora existam milhares de exemplos reais, alguns exemplos de onde você gostaria de enviar ficariam com ferramentas como cat banana.txt e echo e grep . Olhe para o 'bash piping', 'bash evaluation / expansion', e coisas como STDIN .

    
por earthmeLon 28.01.2017 / 00:02
2

O Ubuntu, e todas as distribuições do Linux com utilitários GNU instalados, possuem xargs , que permite executar um comando com argumentos enviados por outro comando ou a partir do stdin. No seu caso, o que você gostaria de fazer é o seguinte:

xargs  mongod < mongo_args.txt

Aqui você tem mongo_args.txt , que é o arquivo de texto com seus argumentos, e está sendo redirecionado como stdin to xargs . Isso será combinado com mongod e executado como um comando completo.

    
por Sergiy Kolodyazhnyy 28.01.2017 / 00:16