Jak mogę uruchomić Mongod w tle na Uniksie (Mac OSX)?

50

Chciałbym uruchomić mongod w tle jako coś zawsze obecnego. Jaki byłby najlepszy sposób to zrobić? W pewnym sensie sposób, w jaki mogę uruchomić MySQL przy starcie i zawsze działa w tle. Może to tylko niektóre skrypty bash, ale byłoby miło usłyszeć, jeśli jest lepszy sposób. Jeśli to tylko bzdura - jak by to wyglądało? Dzięki.

Ryan Montgomery
źródło
1
npm install pm2 -g+ pm2 start mongod+ pm2 saveto przyjemny wieloplatformowy sposób na utrzymanie dowolnego procesu działającego w tle w trakcie sesji.
Jthorpe

Odpowiedzi:

81

Demon MongoDB (mongod) ma opcję wiersza polecenia, aby uruchomić serwer w tle ...

--fork

Ta opcja wiersza polecenia wymaga również podania pliku, w którym mają być rejestrowane wiadomości (ponieważ nie można użyć bieżącej konsoli). Przykład tego polecenia wygląda następująco:

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

Możesz to umieścić w pliku skryptu bash /etc/init.d/mongod. A następnie, aby usługa była uruchamiana podczas uruchamiania, utwórz standardowe dowiązania symboliczne (S ## & K ##) w /etc/rc#.d/. Oto samouczek, który bardziej szczegółowo wyjaśnia ten proces. Przewiń w dół do sekcji „Aktywacja skryptu początkowego”. Ma to również tę dodatkową zaletę, że umożliwia wykonywanie poleceń takich jak ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
źródło
Nie mogę tego zrobić w systemie Windows.
Malik Brahimi,
@MalikBrahimi Patrz stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db pracował dla mnie
Selvakumar Esra
Jeśli nie chcesz tworzyć dodatkowego pliku dziennika, istnieje również opcja, --syslogw której wszystko jest zapisywane w dzienniku systemowym.
Markus Graf
@Jesse Webb. I czy będzie nadal działać po wylogowaniu, na przykład połączenie ssh?
Miguel
11

Ponieważ jesteś na komputerze Mac, powinieneś użyć Homebrew, aby zainstalować MongoDB (jeśli jeszcze tego nie zrobiłeś, musisz zainstalować Homebrew):

brew install mongodb

Powiedzmy, że zainstalowana wersja ma nazwę 2.0.6-x86_64. Następnie dodaj wygenerowany przez Ciebie plik Plist LaunchAgent:

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

To uruchomi mongodsię teraz w tle i za każdym razem, gdy ponownie uruchomisz komputer.

Andrzej
źródło
1
zaktualizowano: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,
4

spróbuj uruchomić następujące polecenie:

mongod --fork --syslog
Pedro Luz
źródło
0

Klasycznie, aby uruchomić w tle, po prostu zacznij od
nohup some_command -to launch &
Więc to jest nohup &, umieść polecenie, które chcesz uruchomić w tle między nohup a &. Będzie działał jak ty, będzie działał po zamknięciu terminalu lub wylogowaniu. Możesz uruchomić go jako inny użytkownik przez sudo. Aby uruchomić go na starcie, dodaj go do zamiany skryptów init (nie wiem jak to nazywają). Wypisze każde wyjście do pliku, w którym go uruchomiłeś, o nazwie nohup.out

Ronald Pottol
źródło
0

Najlepszym sposobem na uruchomienie programu podczas uruchamiania w systemie OS X jest utworzenie LaunchDaemon (zobacz dokumenty Apple i rzuć okiem na niektóre dostarczone przez Apple demony w / System / Library / LaunchDaemons) i zainstaluj go w / Library / LaunchDaemons. Lingon może pomóc w utworzeniu pliku .plist.

Gordon Davisson
źródło