Соберите шаблон в строке из файла журнала и напечатайте следующие n строк до следующего шаблона

Для повторного использования того же диска в ZFS, если вы уверены, что диск не неисправен, хорошим началом будет выполнение DD первых 10 ГБ диска, но это нужно делать и в конце привод. А вот DD 10 Гб не надо, думаю первого и последнего МБ хватит.

Я решил это так:

dd bs=512 if=/dev/zero of=/dev/sdk count=2048 seek=$(($(blockdev --getsz /dev/sdk) - 2048))
dd bs=512 if=/dev/zero of=/dev/sdk count=2048 

Затем просто добавьте «новый» диск обратно в пул ZFS. Не нужно очищать этикетки, стирать, протирать диск. ДД - это все, что вам нужно. Вы также не должны разбивать диск после DD. ZFS не примет ранее разбитый на разделы диск.

Тогда простоzpool replace <pool-name> <old-device> <new-device>

обычно это диск -с идентификатором -и устройство, указанное в lsblk.

2
31.03.2021, 20:30
2 ответа
$ awk -v t=34897 '/^\[/{f=($4=="T("t")")} f' file
[12] 03/31/21 08:33:30.080851 T(34897) _DBG message y 1
[12] 03/31/21 08:33:31.457612 T(34897) _DBG message y 2
                        test message line 2
                        test message line 3
                        test message line 4
[12] 03/31/21 08:33:32.56341 T(34897) _DBG message y 3
[12] 03/31/21 08:33:33.78123 T(34897) _DBG message y 3
                        test message line 2
[12] 03/31/21 08:33:34.56712 T(34897) _DBG message y 4

Приведенный выше код устанавливает флаг «найдено» fкаждый раз, когда видит строку, начинающуюся с [. Если 4-е поле в этой строке равно T(<target value>), тогда fустанавливается равным true (1 ), в противном случае — false (0 ). Когда читается каждая строка, если fистинно в это время, то печатается текущая строка.

С любым скриптом awk, если вы хотите увидеть его с другим форматированием и меньше полагаться на значения по умолчанию, чтобы сделать его немного менее кратким и более понятным, вы можете -распечатать его с помощью GNU awk (примечание :это должен быть gawk, а не какой-то другой вариант awk ), какawk -o-...:

$ awk -o- -v t=34897 '/^\[/{f=($4=="T("t")")} f' file
/^\[/ {
        f = ($4 == "T(" t ")")
}

f {
        print
}
3
28.04.2021, 22:54

Сначала мы определяем некоторые вспомогательные переменные, чтобы помочь в формулировании регулярных выражений на основе поля -.

# definition of a unit space
_s_='[:space:]'

# regex for a space char and nonspace char
s="[$_s_]" S="[^$_s_]"

# a field is a run of nonspaces followed by a run of spaces
F="$S\{1,\}$s\{1,\}"

   id=34897

sed -ne ":top
  /^\[$S*$s$s*\($F\)\{2\}T($id)$s/{
    :nxt
      p;n
    /^$s/b nxt
    b top
  }
" file
0
28.04.2021, 22:54

Теги

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