web-dev-qa-db-ja.com

mongoDBをインストールします(子プロセスが失敗し、エラー番号100で終了しました)

Macbook airにmongoDBをインストールしようとしました。

公式Webサイトからzipファイルをダウンロードし、そのファイルを抽出してルートディレクトリに移動しました。その後、そのディレクトリの下に、/ data/dbと/ logフォルダーを作成しました。

これが私のmongodb.configで、これは私のDBの基本的な設定を説明しています。

dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017

fork = true
rest = true
verbose = true
#auth = true
#noauth = true

さらに、構成ファイルで#が何を意味するのかを知りたいです。

このファイルを/mongodb/binに配置しました。/mongodbは、ファイルを抽出したディレクトリです。

ターミナルを開いて./mongod --config mongodb.configと入力すると、これが返ってきました。

Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100

このエラーを処理するにはどうすればよいですか?

20
Juneyoung Oh

作成したデータフォルダーはSudoで作成された可能性が非常に高いです。これらはrootが所有しており、通常のユーザーは書き込みできません。あなたがあなたのMacbookの唯一のユーザーである場合、ディレクトリの所有権をあなたに変更してください:

Sudo chown juneyoungoh /data
Sudo chown juneyoungoh /data/db
Sudo chown juneyoungoh /data/log

これを公共のマシンまたは正当な場所にインストールする予定がある場合は、他の場所でmongoのセキュリティプラクティスの詳細をお読みください。 Macbookで実行します。

25
Frambot

同様の問題があり、「Sudo」の問題とは関係ありませんでした。カーネルパニックから回復しようとしていた!

データフォルダーを見ると、mongod.lockファイルがそこにあることがわかりました。私の場合、このページは非常に役立ちました: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ 。彼らが説明するように、

mongod.lockがゼロバイトファイルでない場合、mongodは起動を拒否します。

私の環境でこのソリューションをテストしましたが、完全に機能します。

  1. 削除する mongod.lockファイル。
  2. データベースを修復します:mongod --dbpath /your/db/path --repair
  3. Mongodを実行します:mongod --dbpath /your/db/path
12
goldenboy

私のマシンにも同じ問題がありました。ログファイルには:

Mon Jul 29 09:57:13.689 [initandlisten]エラー:ジャーナルファイルの空き容量が不足しています
Mon Jul 29 09:57:13.689 [initandlisten]少なくとも3379MBを/ var/mongoexp/rs2/journalで使用可能にするか、-smallfilesを使用してください

mongod --smallfilesを使用して解決しました。または、設定ファイルよりも-configオプションでmongodを起動する場合は、nojournal=trueによる先行書き込みジャーナリングを無効にします(先頭の#を削除します)。さらにディスク領域を増やすと、上記の問題が解決します。

9
burseaner

同じエラーに関する同様の問題-修復スクリプトを実行しようとしましたSudo -u mongodb mongod -f /etc/mongodb.conf --repair

チェック済みps aux | grep mongoそして、デーモンが実行されていたことを確認します。それを停止し、問題なく修復スクリプトを実行しました。

それが他の誰かに役立つことを願っています。

3
kode

これは、おそらくmongodbを適切にシャットダウンしておらず、mongodbを正しい方法で起動していないためです。 _mongodb.config_によると、_dbpath = /mongodb/data/db_があります-リポジトリ_/mongodb/data/db_を作成したと思いますか?すべてのステップを明確にします。

  1. MONGODBを開始するには

_mongodb.config_で、_dbpath = /mongodb/data/db_を_dbpath = /data/db_に変更します。端末で、_mkdir /data/db_と入力してdbリポジトリを作成します。これでリポジトリができました-mongoを起動できます。

バックグラウンドでmongoを起動するには、_mongod --dbpath /data/db --fork --logpath /dev/null_と入力します。

  • _/data/db_は、dbの場所です。
  • _--fork_は、バックグラウンドでmongoを起動することを意味します-デーモン。
  • _--logpath /dev/null_は、ログを記録したくないことを意味します-_/dev/null_を_/var/log/mongo.log_のようなパスに置き換えることで、それを変更できます

    1. MONGODBをシャットダウンするには

mongoと入力し、次に_use admin_とdb.shutdownServer()を入力して、mongoに接続します。 mongoDB で説明するように

何らかの理由でこの手法が機能しない場合は、いつでもプロセスを強制終了できます。

次のように入力して、mongodbプロセスのPIDを見つけます。_lsof -i:27017_ mongodbがポート_27017_で実行されていると仮定して

_kill <PID>_と入力し、_<PID>_を前のコマンドで見つかった値に置き換えます。

1

Linux(Centos)でも同じエラーが発生しましたが、これでうまくいきました。

  1. Dbpathからmongod.lockを削除します

    $ rm /var/lib/mongo/mongod.lock

  2. Mongodプロセスを修復する

    $ mongod --repair

  3. Mongod configを実行します

    $ mongod --config /etc/mongod.conf

1

一般に、このエラーは、mongod.confファイルがデータベースストアまたはログストア、またはprocessidストアの特定のパスを見つけられないか、mongodで宣言された構成ディレクトリおよびファイルにアクセスするためのファイルアクセス権を取得できない場合に発生します.conf

このエラーを解決するには、MongoDBによって生成されたログを観察する必要があります。MongoDBがアクセスできないファイルまたはディレクトリが明確に示されます。

上記のエラーは、スクリーンショットの下に表示されます enter image description here

enter image description here

0
Narendra Maru

同じエラーが発生しました。ログを見るためにインタラクティブに実行しました。

2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017

次に、lsofを使用して、どのプロセスが自分のポートを使用しているかを調べました。

$ lsof -i:27017
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mongod  2106 MYUSERID   10u  IPv4 0x635b71ec3b65b4a1      0t0  TCP *:27017 (LISTEN)

以前にフォークして、オフにするのを忘れていたのはmongodでした(bashウィンドウで実行されていなかったため)。 kill 2106を実行してそれを強制終了すると、エラー100なしでプロセスを実行できます。

0
AnneTheAgile

サーバーの「/」パスに、フォルダー「data」と「db」を作成します。実際には、データを保存するフォルダーのアクセス許可を作成または変更する必要があります!

0
Hamid Alinia