Запуск и управление двумя демонами с одним и тем же исполняемым rc вместе

В systemd 4 цели. то, что вам нужно, - это Emergency.target Думаю, вы можете попробовать следующие шаги:

  1. перезагрузите систему
  2. прервите обратный отсчет в меню загрузчика, нажав любую клавишу
  3. переместите курсор к записи, которую нужно запустить
  4. нажмите e , чтобы отредактировать текущую запись
  5. переместите курсор к записи в строку, которая начинается с linux16 . Это командная строка ядра.

6.append systemd.unit = required.target

  1. нажмите ctrl + x , чтобы загрузиться с этими изменениями.

Это метод rhel7. Я думаю, что это может быть похоже на suse. Когда вы входите в аварийный режим, пароль root по-прежнему требуется. удачи :)

1
22.10.2018, 19:47
1 ответ

Когда вы пишете«обычно» , это звучит как состояние гонки. Затем случайным образом определяется, какой из экземпляров выживет.

Нет основной проблемы в том, что вы пытаетесь сделать с помощью rc-скриптов. Сценарии rc только запускают команды. Однако то, что вы пытаетесь запустить, должно иметь возможность запускаться в нескольких экземплярах. Система rc ничего не делает (как таковая )волшебным образом для этого.

Из того, что вы описываете, я могу предположить, что части проекта 1 и 2 используют одни и те же ресурсы, поэтому node.js может запускать только один экземпляр. Например, оба проекта привязаны к одному и тому же порту. Два экземпляра не могут обслуживать один и тот же порт -, поэтому только первый запустит (гонку ).

Чтобы отладить это -, начните с проверки правильности обработки нескольких экземпляров. Попробуйте отключить сценарии запуска. Затем запустите оба проекта вручную одновременно.

Сначала бежишь:

/usr/local/bin/node /usr/home/ec2-user/dev/projects/my_project_1/index.js

А потом:

/usr/local/bin/node /usr/home/ec2-user/dev/projects/my_project_2/index.js

Когда узел выводит данные в STDOUT, а ошибки отправляются в STDERR, становится легче увидеть, что пошло не так. Я почти уверен, что ваша проблема лежит где-то здесь, и что вывод может помочь вам в дальнейшем расследовании.

Если описанное выше действительно работает (вопреки моим подозрениям ), тогда вам нужно получить вывод журнала из процессов начального узла в сценарии запуска. Не похоже, что node.js ведет журнал в файл или системный журнал. Это означает, что если вы попытаетесь запустить rc-скрипт вручную, вы должны получить сообщение об ошибке на экране. Поэтому попробуйте управлять своим rc-скриптом с помощью:

service my_service_1 start

Чтобы глубже изучить ведение журнала, посмотрите , где находится файл журнала nodejs --.

ПРИМЕЧАНИЕ:Вы играете со своими собственными сценариями в /etc/rc.d/your_script, которые предназначены для базовой системы. Вы должны поместить свои скрипты в /usr/local/etc/rc.d/your_script. Команда serviceвыполняет поиск в обоих местах, поэтому она будет работать одинаково. Никаких изменений в /etc/rc.confтакже не потребовалось.

0
28.01.2020, 00:24

Теги

Похожие вопросы