mount + mount :специальное устройство /dev/sdX не существует

GNU sedимеет флаг eдля команды s, позволяющий вам интегрировать обработку оболочки, такую ​​как cksum, в ваш скрипт:

sed -E 'h;s_.*~store:/([^~]*).*_cksum /opt/xyz\1_e;x;G;s_~[^~]*(.*)\n(.*).* (.*)_~\2~\3\1_;s/~/  /g'
  • опция -Eпереключает на расширенные регулярные выражения для лучшей читабельности
  • hсохраняет текущую строку в резервной области, поэтому мы можем ее испортить
  • s_.*~store:/([^~]*).*_cksum /opt/xyz\1_eсоответствует всему, включаяstore:/(для удаления ), имя файла внутри ()для повторного использования как \1и остальную часть строки (для удаления )и заменяет ее на cksum+ путь. Теперь флаг eвступает в действие, чтобы выполнить эту команду и заменить пространство шаблонов тем, что возвращается
  • x;Gменяет местами удержание и пространство шаблонов, а затем добавляет удержание к пространству шаблонов, поэтому буфер содержит
  • s_~[^~]*(.*)\n(.*).* (.*)_~\2~\3\1_может потребоваться для чтения, но легко записать:~[^~]*— это второе поле, (.*)\nостальная часть исходной строки и (.*).* (.*)три поля, возвращаемые cksum, поэтому второе поле получает заменяется именем файла и контрольной суммой
  • Вы не написали это в своем вопросе, но в примере у вас не ~в качестве разделителя, а два пробела:s/~/ /g
0
02.11.2020, 11:58
1 ответ

Возможно, ваш /etc/fstabуказывает некоторые монтирования с помощью UUID=или LABEL=(, что приводит к тому, что mountперебирает все найденные блочные устройства ), и у вас есть некоторые мусорные файлы, такие как /dev/sdfи /dev/sdg, которые не являются фактическими узлами устройства?

Выполнить ls -l /dev/sdf /dev/sdg. Если он что-то отображает, и буква в самом первом столбце строки разрешений не b, это не настоящие блочные устройства. Они могли быть созданы случайно введенной командой с ошибкой или двумя ранее.

3
18.03.2021, 22:52

Теги

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