Как я преобразовываю sysv-init сценарий в Новомодное задание?

Я хотел бы преобразовать slapd Сервер LDAP init сценарий к Новомодному сервису. Однако у меня есть очень мало знания сценариев SysV init (и материал LSB (?)). А именно, я интересуюсь respawn возможность Выскочки.

slapd сценарий init из Ubuntu 14.04 здесь. Новомодный сервис, который я придумал, здесь.

Я переместил достаточно вещей из sysv сценария? Я сделал ошибки? Вещи, которые я не понял из sysv сценария, я не включал в Новомодное задание. Кто-то мог объяснить этот sysv init сценарий мне?

Соответствующие файлы отправляются на GitHub.


Фон:

У меня есть несколько серверов LDAP N-способом мультиведущая репликация. Существует известная ошибка, которая может вызывать утечки памяти, ведя к slapd демоны, иногда становящиеся жертвой Уничтожителя OOM.

Мои опции включают:

  1. Получение slapd повторно метать икру (предмет этого вопроса).
  2. Используя более новую версию OpenLDAP (вероятно, скомпилированный из источника).
  3. Бросок большего количества RAM в сервере.
2
задан 16 September 2014 в 13:24

2 ответа

Я записал тот здесь: https://bitbucket.org/CameronNemo/upstart-jobs/src/b5a709465304bdf420ca2507ed14f6fe67272de8/slapd.conf? at=master

Несколько ошибок Вы сделали:

  • должен быть нет - между slapd и его опциями.
  • запуск на событиях должен иметь and между ними.
  • виртуальные файловые системы должны измениться на файловую систему, как сказала Letizia.
1
ответ дан 20 November 2019 в 00:19

Ключевое слово LSB

По данным LSBInitScripts:

 $remote_fs all filesystems are mounted. In some LSB run-time environments,
            filesystems such as /usr may be remote. If the script need a mounted 
            /usr/, it needs to depend on $remote_fs. Scripts depending on $remote_fs
            do not need to depend on $local_fs. During shutdown, scripts that need to
            run before sendsigs kills all processes should depend on $remote_fs. 

в то время как согласно странице справочника удаленных файловых систем:

 When it occurs, local filesystems such as /usr may not be mounted.  
 For most normal services the  filesystem(7)  event  is sufficient.

Необходимо изменить удаленные файловые системы с событием файловой системы что:

 The  filesystem  event  is generated by the mountall(8) daemon after it
 has mounted all filesystems listed in fstab(5).

Устойчивость

Проверка сценария SystemV init $SLAPD_CONF. Если не присутствует никакой тип конфигурации, сбой сценария, чтобы запуститься, и остановиться завершается с выходом 0, ничего не делая.

Эта проверка полезна в случае перезагрузки между фазой установки и фазой конфигурации или во время процедуры удаления. Для понимания его значения, необходимо проанализировать prerm и postrm сценарии в /var/lib/dpkg/info.

Например, prerm попытки остановиться slapd, и если это перестало работать, чем unistall процедура перестанет работать также. остановитесь процедура без конфигурационного файла будет возвраты 0 для разрешения удаления OpenLDAP пакет, который установлен, но не настроен.

Функция check_for_no_start() предотвратите запускают выполнение на основе переменной $SLAPD_NO_START или если файл $SLAPD_SENTINEL_FILE существует. Это - простой путь к тому, чтобы временно запретить запуск slapd, для примеров для обслуживания. Даже если перезагрузка сервера, slapd не запустится.

Функциональность

Сценарий SystemV создает $piddir (если не существует), и дает правильное разрешение $SLAPD_PIDFILE, это необходимо потому что slapd запишет pid в $SLAPD_PIDFILE.

Необходимо включить это pre_start сценарий.

Согласно start-stop-daemon странице справочника:

    -S, --start [--] arguments
              Check  for  the  existence  of  a  specified process.  If such a
              process exists, start-stop-daemon does nothing, and  exits  with
              error  status 1 (0 if --oknodo is specified).  If such a process
              does  not  exist,  it  starts  an  instance,  using  either  the
              executable  specified  by --exec or, if specified, by --startas.
              Any arguments given after -- on  the  command  line  are  passed
              unmodified to the program being started.

Поэтому необходимо удалить -- в команде slapd, поскольку заявил CameronNemo.

Наконец на остановке существует опция --retry TERM/10 это означает:

          schedule is a list of at least two items  separated  by  slashes
          (/);  each  item  may be -signal-number or [-]signal-name, which
          means to send that signal, or timeout, which means to wait  that
          many  seconds  for processes to exit, or forever, which means to
          repeat the rest of the schedule forever if necessary.

Я предполагаю, что OpendLDAP требуется немного времени для завершения работу, таким образом, необходимо добавить строку файла конфигурации kill timeout 10, который будет ожидать 10 секунд (по сравнению со значением по умолчанию 5) для отправки slapd SIGKILL.

1
ответ дан 2 December 2019 в 03:59

Другие вопросы по тегам:

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