Как правильно остановить процесс оболочки busybox и дочерний процесс?

Нет, установка на логический том LVM не поддерживается Calamares. См. https://calamares.io/bugs/browse/CAL-226

Apricity основан на Arch Linux, поэтому есть большая вероятность, что Apricity сможет загрузить с логического тома LVM. Но его необходимо установить в раздел из-за ограничений установщика.

2
29.11.2016, 14:48
1 ответ

Для exec

После того, как я прочитал вопрос и ответ Значение " exec env COMMAND " возможным решением может быть префикс env… с помощью exec . Это предотвратит порождение дочернего процесса. Однако ps выводит {svscanboot} / bin / sh / opt / bin / svscanboot . Это имя изменится на svscan / opt / service после выполнения exec .

Или перехватить сигналы

Другой способ справиться с этим - с помощью ловушки, которая передает сигналы дочернему процессу.Например, Переслать SIGTERM потомку в Bash или более подробно объясненный http://veithen.github.io/2014/11/16/sigterm-propagation.html {{1} } Проблема с этим маршрутом решения заключается в том, что сигнал SIGKILL, также известный как номер сигнала -9 , не может быть перехвачен.

Exec с обходным путем изменения имени

Чтобы не перехватить сигнал KILL, я выберу маршрут exec :

…
exec env - PATH=$PATH svscan /opt/service 2>&1

Это все еще усложняет задачу остановки / уничтожения / перенастройте "svscanboot" в системе инициализации Entware из-за измененного имени. Это изменение имени процесса exec потребует обходного пути.

Имитация svscanboot

Entware-daemontools-init-script может быть изменена на имитацию svscanboot , например:

ENABLED=yes
#PRECMD="exec </dev/null;exec >/dev/null;exec 2>/dev/null;/opt/bin/svc -dx /opt/service/* /opt/service/*/log"
PROCS="svscan"
ARGS="/opt/service 2>&1"
PATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin
PREARGS="env - PATH=$PATH"
DESC="daemontools"

Прокомментированный PRECMD запрещает запуск svscan .

0
27.01.2020, 22:44

Теги

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