Устройство / DEV / MAPPER / MPATHB1, исключаемый фильтром

Alternate example for @lesmana solution, possibly simplified.
Provides logging to file if desired.
=====
$ cat z.sh
TEE="cat"
#TEE="tee z.log"
#TEE="tee -a z.log"

exec 8>&- 9>&-
{
  {
    {
      { #BEGIN - add code below this line and before #END
./zz.sh
echo ${?} 1>&8  # use exactly 1x prior to #END
      #END
      } 2>&1 | ${TEE} 1>&9
    } 8>&1
  } | exit $(read; printf "${REPLY}")
} 9>&1

exit ${?}
$ cat zz.sh
echo "my script code..."
exit 42
$ ./z.sh; echo "status=${?}"
my script code...
status=42
$

-121--126-

Начиная с Jijin P совершенно хороший ответ и ужесточение логики немного. Это должно было быть комментарием к его ответу изначально, тогда он стал слишком длинным (и он сам по себе является действительным ответом), поэтому здесь идёт:

awk 'BEGIN {
  FS = ","
  OFS = ","
}

FNR == NR {
  if ($1 in a) {
    a[$1] = a[$1] OFS $2
  } else {
    a[$1] = $2
  }
  next
}

$1 in a {
  print a[$1], $1, $2
}' file1 file2

В общем случае лучше использовать if ($ x в миарее) вместо if (myarray [$ x]! = «») , если только у вас нет конкретной причины не делать этого. Если вы просто хотите убедиться, что элемент массива не был создан, используйте первую версию. Если вы знаете, что создан , и хотите убедиться, что он не является пустой строкой, используйте вторую строку. Хитрость второго заключается в том, что, просто назвав элемент массива miarray [$ x] , даже в контексте проверки его значения, элемент молча создается. В некоторых случаях это может привести к беспорядкам при печати массива с помощью for (index in miarray) .

При использовании print var1, «» var2 «,» var3 это точный вариант использования, для которого существует OFS (разделитель выходных полей). Установка OFS в блоке BEGIN упрощает и ускоряет изменение формата вывода для всего сценария.

Наконец, при выполнении одного действия для первого файла и другого действия для второго/других файлов, шаблонный блок с FNR = = NR , оканчивающийся на следующий оператор, по моему мнению, чище, чем блок if/else.

0
14.07.2018, 01:23
2 ответа

Этот пост дал мне информацию для решения моей проблемы.

https://serverfault.com/questions/87710/debian-lenny-san-lvm-fail

Я использовал слайс 1 для создания PV.

# pvcreate /dev/mapper/mpathb1
  Physical volume "/dev/mapper/mpathb1" successfully created.

К вашему сведению :использовал этот скрипт для создания раздела диска

# cat a.sh
#!/bin/bash
sgdisk -og $1
partprobe $1
ENDSECTOR=`sgdisk -E $1`
sgdisk -n 1:2048:$ENDSECTOR -c 1:"Linux LVM" -t 1:8e00 $1
partprobe $1
sgdisk -p $1
1
28.01.2020, 02:42

Возможные причины :Что-то не так с конфигурацией фильтра. См. [1]. cat /proc/partitions, чтобы проверить, была ли ядро ​​прочитано таблицу разделов. В противном случае используйте partprobeили kpartx.

[1] https://www.thegeekdiary.com/pvcreate-fails-with-error-device-dev-mapper-mpatha-not-found-or-ignored-by-filtering/

0
28.01.2020, 02:42

Теги

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