ฉันจะเรียกใช้ mongod ในพื้นหลังบน unix (mac osx) ได้อย่างไร?


50

ฉันต้องการเรียกใช้ mongod ในพื้นหลังเป็นสิ่งที่นำเสนอเสมอ อะไรจะเป็นวิธีที่ดีที่สุดในการทำเช่นนี้? ชนิดของวิธีที่ฉันสามารถเรียกใช้ MySQL เมื่อเริ่มต้นและมันมักจะทำงานอยู่ในพื้นหลังเสมอ อาจเป็นเพียงสคริปต์ทุบตีบางส่วน แต่มันจะดีถ้าได้ยินว่ามีวิธีที่ดีกว่า หากเป็นเพียงทุบตี - สิ่งที่จะมีลักษณะอย่างไร ขอบคุณ


1
npm install pm2 -g+ pm2 start mongod+ pm2 saveเป็นวิธีข้ามแพลตฟอร์มที่ดีในการทำให้กระบวนการพื้นหลังทำงานข้ามเซสชัน
Jthorpe

คำตอบ:


81

MongoDB daemon (mongod) มีตัวเลือกบรรทัดคำสั่งเพื่อเรียกใช้เซิร์ฟเวอร์ในพื้นหลัง ...

--fork

ตัวเลือกบรรทัดคำสั่งนี้ต้องการให้คุณระบุไฟล์เพื่อบันทึกข้อความ (เนื่องจากไม่สามารถใช้คอนโซลปัจจุบัน) ตัวอย่างของคำสั่งนี้ดูเหมือนว่า:

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

คุณสามารถใส่มันลงในไฟล์ /etc/init.d/mongod สคริปต์ทุบตี จากนั้นเมื่อต้องการให้บริการทำงานเมื่อเริ่มต้นให้สร้างลิงก์สัญลักษณ์มาตรฐาน (S ## & K ##) ภายใน /etc/rc#.d/ นี่คือบทช่วยสอนที่อธิบายกระบวนการนี้โดยละเอียด เลื่อนลงไปที่หัวข้อ "การเปิดใช้งานสคริปต์เบื้องต้น" สิ่งนี้ยังมีประโยชน์เพิ่มเติมในการใช้คำสั่งเช่น ...

service mongod status
service mongod start
service mongod stop

ฉันไม่สามารถทำได้ใน Windows
Malik Brahimi


./bin/mongod --fork --logpath = logs / mongod.log --dbpath = data / db ทำงานให้ฉัน
Selvakumar Esra

หากคุณไม่ต้องการสร้างไฟล์บันทึกเพิ่มเติมนอกจากนี้ยังมีตัวเลือกซึ่ง--syslogทุกอย่างจะถูกเขียนลงในบันทึกของระบบ
Markus Graf

@Jesse Webb และมันจะยังคงทำงานหลังจากที่ฉันออกจากระบบตัวอย่างเช่นการเชื่อมต่อ ssh?
มิเกล

11

เนื่องจากคุณใช้ Mac คุณควรใช้Homebrewเพื่อติดตั้ง MongoDB (คุณจะต้องติดตั้ง Homebrew หากคุณยังไม่มี):

brew install mongodb

2.0.6-x86_64สมมติว่าเป็นรุ่นที่ถูกติดตั้งเป็นชื่อ จากนั้นเพิ่มไฟล์ 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

สิ่งนี้จะเปิดmongodในพื้นหลังทันทีและทุกครั้งที่คุณรีสตาร์ทคอมพิวเตอร์


1
อัปเดต: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


0

หากต้องการเรียกใช้แบบเบื้องหลังให้เริ่มต้นด้วย
nohup some_command -to launch &
ดังนั้นนั่นคือ nohup & ใส่คำสั่งที่คุณต้องการเรียกใช้ในโหมดเบื้องหลังระหว่าง nohup และ & มันจะทำงานในขณะที่คุณมันจะยังคงทำงานหลังจากที่คุณปิดสถานีหรือออกจากระบบ คุณสามารถเริ่มเป็นผู้ใช้อื่นผ่าน sudo ในการทำให้มันทำงานเมื่อเริ่มต้นให้เพิ่มลงในการเปลี่ยนสคริปต์เริ่มต้น (ไม่รู้ว่าพวกเขาเรียกมันว่าอะไร) มันจะเขียนผลลัพธ์ใด ๆ ไปยังไฟล์ที่คุณเริ่มเรียกมันว่า nohup.out


0

วิธีที่ดีที่สุดในการทำให้โปรแกรมทำงานเมื่อเริ่มต้นบน OS X คือการสร้าง LaunchDaemon (ดูเอกสารของ Appleและดู daemons ที่จัดหาโดย Apple ใน / System / Library / LaunchDaemons) และติดตั้งใน / Library / LaunchDaemons Lingonสามารถช่วยคุณสร้างไฟล์. plist

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.