ZFS в Linux (RHEL 7.5) ls: каталог для чтения.: Не каталог

В развитие ответа jordanm:

1. Пропустите все данные через один экземпляр wc -l

    if [ "$#" -gt 0 ]
    then
     cat -- "$@" | wc -l
    else
     эхо 0
    fi
    

    или

    cat -- /dev/null "$@" | wc -l
    
    • Используйте -- "$@" для защиты от имен файлов, начинающихся с -.
    • Избегайте вызова cat без аргументов, поскольку это приведет к считыванию стандартного ввода.
    • Обратите внимание, что cat a_single_file | something - это классическая форма ужасного Бесполезного использования Cat, но cat one_or_more_file(s) | something может быть в порядке (хотя это все равно не идеально).

    2. Положитесь на то, что wc выдает строку "total"

      if [ "$#" -gt 0 ]
      then
       wc -l -- /dev/null "$@" | tail -1
      else
       echo 0 total
      fi
      

      или

      wc -l -- /dev/null /dev/null "$@" | tail -1
      
      • Обратите внимание, что wc выдает строку total только если у него есть как минимум два аргумента имени файла.

      3. Используйте awk без использования wc

        if [ "$#" -gt 0 ]
        then
         awk 'END {print NR}' -- "$@"
        else
         эхо 0
        fi
        

        or

        awk 'END {print NR}' -- /dev/null "$@"
        

        Предупреждение:

        Приведенные выше команды не дадут одинакового ответа. если любой из файлов заканчивается символом, отличным от новой строки.

        1
        16.04.2018, 23:57
        3 ответа

        zfs 0.7.9 ahora está disponible en los repositorios que solucionan el problema.

        0
        27.01.2020, 23:43

        Вместо того, чтобы возвращаться к последнему ядру z -stream 7.4, я пересобрал последние доступные пакеты (0.7.8 )с патчем от разработчиков ZoL, который устраняет проблему. Я загрузил все свои обороты сюда :https://step.polymtl.ca/~coyote/dist/zfs/0.7.8-1.2

        0
        27.01.2020, 23:43

        Это связано с обратным переносом изменений, внесенных Red Hat в ядро ​​7.5 (v3.10.0 -862 ). lsвыполняет системный вызов getdents(), который теперь выполняет iterate_dir()вместо readdir().

        Возврат к ядру версии 3.10.0 -693.21.1 должен решить проблему.

        1
        27.01.2020, 23:43

        Теги

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