Почему не отображается ACPI :Подготовка к переходу в спящий режим S5 в Ubuntu?

Подстановка команды без кавычек `cat $PWD/$1 | jq -cr '.[]'`делает следующее:

  1. Введите команду cat $PWD/$1 | jq -cr '.[]'. Кстати, это слишком сложный способ записи jq -cr '.[]' <"$1", за исключением того, что этот вариант не нарушает , если $1содержит определенные специальные символы или является абсолютным путем.
  2. Разбить полученную строку на части, -разделенные пробелами. Ваш вопрос не очень ясен, но вы, кажется, ожидаете, что символы новой строки -разделены — это не то, что делает замена без кавычек.
  3. Рассматривайте каждую часть как подстановочный шаблон и, если она соответствует одному или нескольким именам файлов, замените эту часть списком совпадающих имен файлов.

Шаги 2 и 3 в просторечии известны как «оператор split+glob» и это почти никогда не то, что вам нужно . Всегда используйте двойные кавычки вокруг подстановок переменных и команд, если вы точно не знаете, почему вам нужно опустить кавычки .

Чтобы обработать файл построчно в оболочке,используйте петлюwhile read:

jq -cr '.[]' <"$1" |
  while IFS= read -r line; do
    printf '%s\n' "$line"
  done

Но, возможно, вам лучше подключиться к какому-нибудь другому инструменту. Оболочки сами по себе плохо обрабатывают большие объемы строковых данных.

0
18.06.2021, 19:07
1 ответ

Вероятно, Ubuntu и CentOS используют разные уровни журнала консоли, поэтому Ubuntu отфильтровывает сообщение ACPI: Preparing...и вместо этого, вероятно, выводит другое сообщение из сценариев завершения работы.

Сообщение Ubuntu Starting Power-Off...не имеет префикса [ <uptime in seconds> ], как все сообщения журнала ядра, поэтому оно, вероятно, создается другим механизмом.

Сообщения журнала, создаваемые ядром, назначаются классам приоритета, а сообщения с низким -приоритетом обычно не отображаются на консоли. Пожалуйста, запустите sudo sysctl kernel.printkв обеих системах и посмотрите, используют ли разные дистрибутивы разные значения. Команда должна вывести четыре числа :, первое из которых указывает наивысший класс приоритета сообщений ядра для фильтрации.

Документацию по значениям kernel.printkможно найти здесь.

1
28.07.2021, 11:23

Теги

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