web-dev-qa-db-ja.com

Unix(mac os x)でバックグラウンドでmongodbを実行するにはどうすればよいですか?

いつも存在するものとして、mongodをバックグラウンドで実行したいと思います。これを行う最善の方法は何でしょうか?起動時にMySQLを実行する方法のようなもので、常にバックグラウンドで実行されています。多分それはいくつかのbashスクリプトだけかもしれませんが、もっと良い方法があるかどうか聞いていただければ嬉しいです。それが単にbashである場合-それはどのように見えますか?ありがとう。

53
Ryan Montgomery

MongoDBデーモン(mongod)には、サーバーをバックグラウンドで実行するコマンドラインオプションがあります...

--fork

このコマンドラインオプションでは、メッセージを記録するファイルも指定する必要があります(現在のコンソールを使用できないため)。このコマンドの例は次のようになります。

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

これを/etc/init.d/mongod bashスクリプトファイルに入れることができます。次に、起動時にサービスを実行するには、/ etc/rc#.d /内に標準のシンボリックリンク(S ##&K ##)を作成します。このプロセスをさらに詳しく説明する tutorial を次に示します。 「Init Script Activation」というタイトルのセクションまでスクロールします。これには、次のようなコマンドを実行できるという追加の利点もあります...

service mongod status
service mongod start
service mongod stop
85
Jesse Webb

Macを使用しているため、MongoDBをインストールするには Homebrew を使用する必要があります(Homebrewをまだインストールしていない場合はインストールする必要があります)。

brew install mongodb

インストールされたバージョンの名前が2.0.6-x86_64。次に、生成されたLaunchAgent plistファイルを追加します。

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

これでmongodがバックグラウンドで起動し、コンピュータを再起動するたびに起動します。

11
Andrew

次のコマンドを実行してみてください。

mongod --fork --syslog
6
Pedro Luz

古典的には、バックグラウンドで実行するには、
nohup some_command-起動して&
これがNohup&なので、実行するコマンドをNohupと&の間にバックグラウンドで配置します。そのまま実行します。ターミナルを閉じるかログアウトした後も実行を続けます。 Sudoを介して別のユーザーとして起動できます。起動時に実行するには、それをinitスクリプトの置き換えに追加します(何と呼ばれるかわかりません)。それはNohup.outと呼ばれるそれを開始したファイルにすべての出力を書き込みます

0
Ronald Pottol

OS Xの起動時にプログラムを実行する最良の方法は、LaunchDaemonを作成することです( Appleのドキュメント を参照)、/ System/Library/LaunchDaemonsにあるApple提供のデーモンをいくつか見てください。 )、/ Library/LaunchDaemonsにインストールします。 Lingon は、.plistファイルの作成に役立ちます。

0
Gordon Davisson