Можно ли запустить Devan ASCII с OpenRC init?

Это перехватит совпадающие символы:

regex=']0-9a-zA-Z,!^`@{}=().;/~_|[-'

echo "$str" | grep -oP '^['"$regex"']*'

Захват в переменной и удаление из начала исходной строки:

head="$(echo "$str" | grep -oP '^['"$regex"']*')"

tail="${str#"$head"}"

Наконец, получить первый сбойный символ:

failedChar="${tail:0:1}"          # higher shells method.
failedChar="${tail"${tail#?}"}"    # Alternative method.

Использование BASH_REMATCH

str="Testing that this is working."
regex=']0-9a-zA-Z,!^`@{}=().;/~_|[-'
[[ $str =~ ^[$regex]* ]]

head="${BASH_REMATCH[0]}"

tail="${str#"$head"}"

failedChar="${tail%"${tail#?}"}"

echo "fc |$failedChar| at position ${#head}"
4
02.10.2018, 12:06
1 ответ

tl;dr

Да, может быть, но он медленнее и менее эффективен, чем установка sysvinit по умолчанию .

По умолчанию (sysvinit)

Установка Devuan Ascii по умолчанию уже выполняет параллельную загрузку с insserv и startpar . Они работают путем разбора заголовков LSB в сценариях инициализации (, загляните внутрь /etc/init.d), которые явно определяют зависимости. Когда вы запускаете sudo insserv, insservобрабатывает эти сценарии инициализации в такие файлы, как /etc/init.d/.depend.boot, /etc/init.d/.depend.startи т. д. При загрузке startparсчитывает эти сценарии и запускает процессы параллельно в соответствии с этими правилами.

Например, вот моя загрузочная диаграмма с sysvinit (, загружающимся с консоли ):sysv bootchart

OpenRC (неоптимизированный)

Установка OpenRC выполняется так же, как и любого другого пакета:

$ apt update
$ apt install openrc

После установки он сообщит вам:

**********************************************************************
*** WARNING: if you are replacing sysv-rc by OpenRC, then you must ***
*** reboot immediately using the following command:                ***
for file in /etc/rc0.d/K*; do s=`basename $(readlink "$file")` ; /etc/init.d/$s stop; done
**********************************************************************

Запустите это как суперпользователь.

В процессе установки aptудалит insservи startpar.

Однако, по моему опыту, OpenRC медленнее, чем расширенный sysvinit , из-за того, что OpenRC вычисляет зависимости во время загрузки, в отличие от insserv, который делает это при установке пакета -. время.

Например, вот моя загрузочная диаграмма с OpenRC, которая на 1,57 секунды медленнее :openrc unoptimized bootchart

OpenRC (оптимизировано)

Если мы хотим пойти дальше, мы можем добавить строку rc_parallel="YES"к /etc/rc.conf. Однако это искажает выходные данные запуска для минимального выигрыша во времени запуска, что все еще медленнее, чем insserv+ startpar:.openrc optimized bootchart

Это связано с тем, что OpenRC по-прежнему использует сценарии инициализации LSB, написанные в оболочке, в отличие от настроек, более оптимизированных для него с использованием запуска openrc -. Даже с обновленной версией OpenRC с openrc -init, используемой вместо sysvinit, время загрузки все еще хуже.

6
27.01.2020, 20:53

Теги

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