При выполнении скрипта awk
с awk -f
скрипт должен содержать только код awk
.
В вашем случае
{if ($2==NULL) print $0"100"}
или
$2 == NULL { print $0 "100" }
Вы можете выполнить это с помощью
awk -F ';' -f my.awk example.txt
Если вы хотите установить FS
на ;
в скрипте (статически, а не в командной строке с помощью -F
), сделайте это в блоке BEGIN
:
BEGIN { FS = ";" }
$2 == NULL { print $0 "100" }
Также обратите внимание, что переменная NULL
не установлена в вашем коде.
Для других типов файловых систем это будет работать. Но XFS здесь особенный.
Изменение 6-го поля /etc/fstab
на отличное от -нулевое значение в файловой системе XFS приведет к запуску системы fsck.xfs
, чья справочная страница говорит:
NAME
fsck.xfs - do nothing, successfully
[...]
However, the system administrator can force fsck.xfs to run xfs_re‐
pair(8) at boot time by creating a /forcefsck file or booting the sys‐
tem with "fsck.mode=force" on the kernel command line.
Таким образом, обычно fsck.xfs
вообще ничего не будет делать.
Если вы действительно хотите, чтобы xfs_repair
запускался при загрузке, необходимо выполнить два условия, оба из которых:
a )Шестое поле /etc/fstab
должно быть не равно -нулю для рассматриваемой файловой системы XFS, чтобы fsck.xfs
выполнялось.
b )Либо файл /forcefsck
должен существовать в корневой файловой системе (, либо, возможно, внутри initramfs, если планируется проверка корневой файловой системы ), либо в командной строке ядра должна быть загрузочная fsck.mode=force
вариант. Это приведет к тому, что fsck.xfs
запустит xfs_repair
вместо того, чтобы ничего не делать.
Файловая система XFS и инструмент xfs_repair
предполагают, что базовый диск находится в хорошем состоянии или, по крайней мере, способен прозрачно заменить поврежденные блоки встроенными -запасными блоками (, как это делают все современные диски. ). Если на современном диске есть постоянные сбойные блоки, видимые для операционной системы, это обычно означает, что встроенный -механизм запасных блоков уже перегружен количеством сбойных блоков, и диск, вероятно, в любом случае скоро полностью выйдет из строя..
На справочной странице xfs_repair
говорится:
Disk Errors
xfs_repair aborts on most disk I/O errors. Therefore, if you are trying
to repair a filesystem that was damaged due to a disk drive failure,
steps should be taken to ensure that all blocks in the filesystem are
readable and writable before attempting to use xfs_repair to repair the
filesystem. A possible method is using dd(8) to copy the data onto a
good disk.
Таким образом, вы, вероятно, не должны устанавливать xfs_repair
для автоматического запуска в нормальных условиях.
Если в файловой системе XFS есть ошибки, вы всегда должны сначала оценить состояние основного диска:smartctl -a /dev/<disk device>
может быть полезно,например, использовать dd
для чтения всего содержимого раздела/LV в /dev/null
и убедиться, что команда может завершиться без ошибок.
Если диск неисправен, сначала следует скопировать содержимое раздела/LV на новый, свободный -диск с ошибкой (, возможно, используя dd
или ddrescue
), и только после этого следует пытаться запустите xfs_repair
в файловой системе на свободном диске с ошибкой -.
Автоматический запуск xfs_repair
во время загрузки может быть подходящим обходным решением, если вы знаете, что что-то вызывает ошибки уровня файловой системы -, даже если ваши диски находятся в хорошем состоянии. Но это всего лишь обходной путь, а не исправление :, вы должны выяснить, что вызывает ошибки файловой системы, и устранить основную причину. (Возможно, ошибка драйвера файловой системы, для исправления которой требуется обновленный пакет ядра?)
Если в файлах на /dev/sda
есть ошибки, то нужно запустить на нем fsck
. Имейте в виду, что на самом деле он не восстановит сам диск, а только файлы. Если на диске действительно есть ошибки и он выходит из строя, то лучше всего заменить диск и восстановить данные из резервной копии, потому что, если все станет достаточно плохо, вы можете потерять данные, особенно если диск полностью выйдет из строя.