MongoDB: bat-файл запуска и остановки

Статус
Закрыто для дальнейших ответов.

антиКИЛЛЕР

Well-Known Member
Регистрация
28.07.2011
Сообщения
92
Итак, решил поизучать я mondoDB. Для этого на локалхост к денверу поставил это чудо.
Всё запустилось, всё заработало.
Но вот каждый раз стартовать и останавливать cmd командами сервер mongo мне не хочется.
А потому решил я написать bat файлики которые стартуют и останавливают сервер mongo вместе с denwer`ом.
Но возникли у меня проблемы, проблемы скорее моего низкого навыка написания bat файлов.
Подскажите как решить две следующие проблемы:

1 Проблема.
Есть bat файл запуска всего этого дела:
Код:
@ echo OFF
echo Стартуем Денвер...
call D:\webDevelop\Denwer\denwer\Run.exe
echo	Готово
echo Стартуем mongoDB...
call D:\webDevelop\mongodb\bin\mongod.exe --dbpath=D:\webDevelop\mongodb\
exit
Всё бы ничего, но сервер mongo так и остаётся в этом окне cmd. Более того, это окно нельзя закрывать, т.к. при этом и сам сервер упадёт.
Вот как выглядит окно cmd:
mongoStart.png
Другими словами, после старта монго, этло окно превращается в интерфейс вывода сообщений от mongo сервера, и никакие команды в него, пока сервер mongo работает не принимаются.
Окошко это мешается, висит и закрывать его нельзя, что неудобно и не правктично. Тот же denwer решает подобную проблему добавлением иконок на панель задач. Но у них это сделано через pl скрипты, в которых я ни гугу, и я не понимаю как мне сделать так же и не знаю этого.
Как это можно сделать, как можно получающийся в результате окошко убрать в тот же трей, чтобы оно там висело и не мешалось среди открытых приложений?

2 Проблема.
Есть bat файл остановки всего этого дела:
Код:
@ echo OFF
echo Останавливаем mongoDB...
call D:\webDevelop\mongodb\bin\mongo.exe
:: call D:\webDevelop\mongodb\bin\mongo.exe
:: Такой вариант не работает, аргументами передать не получается:
:: call D:\webDevelop\mongodb\bin\mongo.exe "use admin" "db.shutdownServer()" "exit"
:: Так не работает, перенаправляет просто в файлы:
:: call D:\webDevelop\mongodb\bin\mongo.exe
:: >use admin
:: >db.shutdownServer()
:: >exit
:: Такой вариант тоже не прокатывает, т.к. перенаправление вызовов осуществляется уже после того, как mongo.exe через call завершил работу:
:: Если вместо call использовать start, то тоже не работает((
:: call D:\webDevelop\mongodb\bin\mongo.exe
:: >D:\webDevelop\mongodb\bin\mongo.exe use admin
:: >D:\webDevelop\mongodb\bin\mongo.exe db.shutdownServer()
:: >D:\webDevelop\mongodb\bin\mongo.exe exit
:: Ну и топорный вариант, понятное дело, так же не работает:
:: call D:\webDevelop\mongodb\bin\mongo.exe
:: use admin
:: db.shutdownServer()
:: exit
echo    Готово
echo Останавливаем Денвер...
call D:\webDevelop\Denwer\denwer\Stop.exe
echo    Готово
pause
Суть проблемы в том, что после вызова файла D:\webDevelop\mongodb\bin\mongo.exe данные файл открывается на принятие команд. Фактически mongo.exe захватывает управление и пока не получена команда exit выполняется.
Если запустить такой bat получим следующую картину:
mongoStop.png
И так фисит, пока я ручками не ввиду
use admin
db.shutdownServer()
exit
После чего дальше уже выполняется всё что нужно и получаем конечный результат:
mongoStopped.png
Вопрос: как автоматизировать передачу этих трёх комант скрипту mongo.exe после его запуска?

Буду невероятно признателен тем, кто подкскажет решение этих проблем))
 

medwoodu

Злобный модер
Регистрация
22.12.2005
Сообщения
1 418
Буду невероятно признателен тем, кто подкскажет решение этих проблем))
Учитесь спрашивать гугл. Тут запрос запуск задач в фоновом режиме windows

http://social.technet.microsoft.com/Forums/ru-RU/xpru/thread/6599f175-0ae0-45c8-b37d-5f7eff643a87/
здесь есть точно ответы на ваши вопросы
 

антиКИЛЛЕР

Well-Known Member
Регистрация
28.07.2011
Сообщения
92
Всё оказалось ещё проще и логичнее, а именно тот же mongoDB сервер можно запустить в качестве службы windows, что решает все проблемы.
 
Статус
Закрыто для дальнейших ответов.
Верх Низ