Bagaimana saya bisa menjalankan mongod di latar belakang di unix (mac osx)?

50

Saya ingin menjalankan mongod di latar belakang sebagai hal yang selalu ada. apa jalan terbaik melakukan ini? Seperti cara saya menjalankan MySQL saat startup dan hanya berjalan di latar belakang saja. Mungkin ini hanya beberapa skrip bash, tetapi akan menyenangkan untuk mendengar jika ada cara yang lebih baik. Jika hanya bash - seperti apa itu? Terima kasih.

Ryan Montgomery
sumber
1
npm install pm2 -g+ pm2 start mongod+ pm2 saveadalah cara lintas platform yang bagus untuk menjaga proses latar belakang berjalan di seluruh sesi.
Jthorpe

Jawaban:

81

Daemon MongoDB (mongod) memiliki opsi baris perintah untuk menjalankan server di latar belakang ...

--fork

Opsi baris perintah ini mengharuskan Anda juga menentukan file untuk mencatat pesan (karena tidak dapat menggunakan konsol saat ini). Contoh dari perintah ini terlihat seperti:

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

Anda bisa memasukkan ini ke file script /etc/init.d/mongod. Dan kemudian untuk menjalankan layanan saat startup, buat tautan simbolik standar (S ## & K ##) di dalam /etc/rc#.d/. Berikut ini adalah tutorial yang menjelaskan proses ini secara lebih rinci. Gulir ke bawah ke bagian berjudul "Aktivasi Skrip Init". Ini juga memiliki manfaat tambahan untuk dapat menjalankan perintah seperti ...

service mongod status
service mongod start
service mongod stop
Jesse Webb
sumber
Sepertinya saya tidak bisa melakukan ini di Windows.
Malik Brahimi
@MalikBrahimi Lihat stackoverflow.com/q/15185012/544342
WAF
./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db bekerja untuk saya
Selvakumar Esra
Jika Anda tidak ingin membuat file log tambahan, ada juga opsi --syslogyang semuanya hanya ditulis ke log sistem.
Markus Graf
@Jesse Webb. Dan apakah itu akan tetap berjalan setelah saya logout, misalnya, koneksi ssh?
Miguel
11

Karena Anda menggunakan Mac, Anda harus menggunakan Homebrew untuk menginstal MongoDB (Anda harus menginstal Homebrew jika belum):

brew install mongodb

Katakanlah versi yang diinstal dinamai 2.0.6-x86_64. Kemudian tambahkan file plist LaunchAgent yang dihasilkannya untuk Anda:

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

Ini akan diluncurkan mongoddi latar belakang sekarang dan setiap kali Anda me-restart komputer Anda.

Andrew
sumber
1
diperbarui: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

coba jalankan perintah berikut:

mongod --fork --syslog
Pedro Luz
sumber
0

Secara klasik, untuk menjalankan di latar belakang, mulailah dengan
nohup some_command -untuk meluncurkan &
Jadi itu nohup &, letakkan perintah yang ingin Anda jalankan di latar belakang antara nohup dan &. Ini akan berjalan saat Anda, itu akan terus berjalan setelah Anda menutup terminal atau keluar. Anda bisa memulainya sebagai pengguna lain melalui sudo. Untuk membuatnya berjalan saat start, tambahkan ke pengganti skrip init (tidak tahu apa sebutannya). Ini akan menulis output apa pun ke file tempat Anda memulainya bernama nohup.out

Ronald Pottol
sumber
0

Cara terbaik untuk menjalankan program saat startup pada OS X adalah membuat LaunchDaemon (lihat dokumen Apple , dan lihat beberapa daemon yang disediakan oleh Apple di / System / Library / LaunchDaemons) dan instal di / Library / LaunchDemon. Lingon dapat membantu Anda membuat file .plist.

Gordon Davisson
sumber