Я начал играть с MongoDB на Lucid. Теперь я хотел бы запустить БД и сервер конфигурации на одном компьютере. Оба они используют один и тот же двоичный файл для запуска, но с разными файлами конфигурации и работают на разных портах. Все каталоги для журнала и библиотеки разделены, поэтому один идет в mongodb, а другой - в mongoconf.
Каждый процесс можно без проблем запустить самостоятельно.
start mongodb
stop mongodb
start mongoconf
stop mongoconf
Но если я попытаюсь запустить оба, второй просто запустится и выйдет. Используя 'initctl log-priority debug' я получил в журналах следующее.
Jan 6 12:44:12 mongo4 init: event_finished: Finished started event
Jan 6 12:44:12 mongo4 init: job_process_handler: Ignored event 1 (1) for process 5690
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) main process (5690) terminated with status 1
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) goal changed from start to stop
Jan 6 12:44:12 mongo4 init: mongoconf (mongoconf) state changed from running to stopping
man 5 init показывает, что вы можете использовать имена экземпляров, чтобы различать их. Я попытался использовать instance mongoconf в сценарии выскочки и instance mongodb в другом, но все равно не удалось. Я могу запустить другой процесс вручную, чтобы не было конфликтов по номерам портов или каталогам.
Есть идеи о том, что попробовать или как получить вывод о том, почему он «завершен со статусом 1»?
Спасибо
Для вас, бесстрашных системных администраторов, которые обнаруживают это, выскочка не просто проверяет пути, а, кажется, проверяет, что индекс отличается. Это означает, что о жесткой привязке файла тоже не может быть и речи. единственный способ запустить один и тот же двоичный файл несколько раз - это сделать несколько копий.
Проведя небольшое тестирование, я обнаружил, что выскочка использует полный путь к двоичному файлу, чтобы убедиться, что это тот же процесс. Таким образом, создание копии двоичного файла в другом месте позволит вам создать два сценария выскочки.