Периодическое зависание после запуска systemd в Debian Buster

В приведенном вами примере единственное, что evalполучает, это cat, перенаправление происходит вне eval, и файл предоставляется как стандартный ввод для команды eval "cat".

Один из вариантов заключается в заключении всей команды, включая перенаправление, в одинарные кавычки.:

$ eval 'cat < "$filename"'
hi

Теперь evalполучает всю строку, включая перенаправление и имя переменной, поэтому выполняет раскрытие переменной и необходимые кавычки для имени файла с пробелами. Это все равно сработает.

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

$ eval "cat < '$filename'"
hi

Теперь переменная расширяется оболочкой, но это все еще работает, поскольку кавычки внутри нее сохраняют имя файла вместе. (Учтите, что это не работает, если имя файла содержит апостроф.)

Что бы *не работало, так это:

$ eval "cat" "<" "$filename"

Это похоже на ваш пример, но с цитируемым <перенаправление не будет выполняться внешней оболочкой. Затем evalобъединит аргументы, и результирующая команда будет:

cat < my file

Что не сработает, так как кавычки вокруг my fileисчезли...

0
31.10.2020, 17:59
2 ответа

После публикации этого квеста я обновил свою систему до Debian 11 (Bullseye ), и с этим обновлением я больше не вижу этого зависания. Я предполагаю, что какой-то пакет DE был виноват и был обновлен в процессе. Я все еще сталкиваюсь со строками «debian -vg» при запуске, но, похоже, это никак не влияет на это.

0
18.11.2021, 15:05

Эта vg — ваша корневая файловая система для ядра -в настройках ядра при загрузке. Он не найден, поэтому не смонтирован, поэтому ядро ​​не может использовать его как корневую файловую систему.

... root=/dev/mapper/debian--vg-root...

Ядро ранее должно было знать, что ему нужно распознать эту vg, прежде чем ее можно будет использовать как корневую файловую систему.

0
18.03.2021, 22:55

Теги

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