Como posso executar o mongod em segundo plano no unix (mac osx)?

50

Eu gostaria de executar o mongod em segundo plano como um tipo de coisa sempre presente. Qual seria a melhor forma de fazer isso? É como a maneira como eu posso rodar o MySQL na inicialização e sempre está lá em execução em segundo plano. Talvez sejam apenas alguns scripts bash, mas seria bom saber se existe uma maneira melhor. Se for apenas bash - como seria isso? Obrigado.

Ryan Montgomery
fonte
11
npm install pm2 -g+ pm2 start mongod+ pm2 saveé uma boa maneira de plataforma cruzada para manter qualquer processo em segundo plano em execução nas sessões.
Jthorpe 8/17/17

Respostas:

81

O daemon MongoDB (mongod) possui uma opção de linha de comando para executar o servidor em segundo plano ...

--fork

Esta opção da linha de comandos exige que você também especifique um arquivo para o qual registrar mensagens (já que não pode usar o console atual). Um exemplo deste comando é semelhante a:

mongod --fork --logpath /var/log/mongod.log

Você pode colocar isso em um arquivo de script /etc/init.d/mongod bash. E, para executar o serviço na inicialização, crie os links simbólicos padrão (S ## & K ##) dentro de /etc/rc#.d/. Aqui está um tutorial que explica esse processo com mais detalhes. Role para baixo até a seção intitulada "Init Script Activation". Isso também tem o benefício adicional de poder executar comandos como ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
fonte
Não consigo fazer isso no Windows.
Malik Brahimi
@MalikBrahimi Veja stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = dados / db funcionou para mim
Selvakumar Esra
Se você não deseja criar um arquivo de log extra, também existe a opção --syslogna qual tudo é gravado no log do sistema.
Markus Graf
@Jesse Webb. E continuará funcionando depois que eu sair, por exemplo, a conexão ssh?
Miguel Miguel
11

Como você está em um Mac, use o Homebrew para instalar o MongoDB (você precisará instalar o Homebrew, se ainda não o tiver):

brew install mongodb

Digamos que a versão instalada foi nomeada 2.0.6-x86_64. Em seguida, adicione o arquivo plist do LaunchAgent que ele gera para você:

mkdir -p ~/Library/LaunchAgents
cp /usr/local/Cellar/mongodb/2.0.6-x86_64/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents/
launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

Isso será iniciado mongodem segundo plano agora e toda vez que você reiniciar o computador.

Andrew
fonte
11
atualizado:mkdir -p ~/Library/LaunchAgents cp /usr/local/Cellar/mongodb/3.2.10/homebrew.mxcl.mongodb.plist ~/Library/LaunchAgents launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
helsont 07/10
4

tente executar o seguinte comando:

mongod --fork --syslog
Pedro Luz
fonte
0

Classicamente, para executar em segundo plano, basta começar com
nohup some_comand -para iniciar &
Então isso é nohup &, coloque o comando que você deseja executar em segundo plano entre nohup e &. Ele funcionará como você, continuará funcionando depois que você fechar o terminal ou sair. Você pode iniciá-lo como outro usuário via sudo. Para executá-lo no início, adicione-o à substituição dos scripts init (não sei como eles o chamam). Ele gravará qualquer saída em um arquivo no qual você o iniciou, chamado nohup.out

Ronald Pottol
fonte
0

A melhor maneira de executar um programa na inicialização no OS X é criar um LaunchDaemon (consulte os documentos da Apple e dê uma olhada em alguns dos daemons fornecidos pela Apple em / System / Library / LaunchDaemons) e instalá-lo em / Library / LaunchDaemons. O Lingon pode ajudá-lo a criar o arquivo .plist.

Gordon Davisson
fonte